/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKStdardKjhKapkSjskHanei
*	ソースファイル名	：JBSbatKKStdardKjhKapkSjskHanei.java
*	作成者				：富士通　
*	作成日				：2018年01月17日
*＜機能概要＞
*　標準工事費割賦契約請求実績反映部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v36.00.00	2018/01/17	FJ)謝		【ANK-3296-00-00】標準工事費分割請求 新規作成
*	v36.00.01	2018/02/08	FJ)阪口		【IT1-2018-0000021】工事費割賦契約請求実績ファイルID不正
*	v37.00.00	2018/04/11	FJ)木村		【ANK-3383-00-00】標準工事費分割請求（STEP2）
*********************************************************************/
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.JBSbatKKConst;
import eo.business.common.JCCBatCommon;
import eo.business.common.JKKBatCommon;
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_KOJIHI_KAP_KEI;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JKKCommonUtil;
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.JBSbatOracleSeqUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKStdardKjhKapkSjskHanei extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(工事費割賦契約)*/
	private static final String D_TBL_NAME_KK_T_KOJIHI_KAP_KEI = "KK_T_KOJIHI_KAP_KEI";

	/** テーブル(料金スケジュール定義)*/
	private static final String D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI = "CH_M_PRC_SCHDL_TEIGI";

	/** テーブル(進捗)*/
	private static final String D_TBL_NAME_KK_T_PRG = "KK_T_PRG";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String KK_T_KOJIHI_KAP_KEI_KK_SELECT_002 = "KK_SELECT_002";

	/** SQL定義キー(KK_SELECT_022)*/
	private static final String CH_M_PRC_SCHDL_TEIGI_KK_SELECT_022 = "KK_SELECT_022";

	/** テーブルアクセスクラス(工事費割賦契約)*/
	private JBSbatSQLAccess db_KK_T_KOJIHI_KAP_KEI = null;

	/** テーブルアクセスクラス(料金スケジュール定義)*/
	private JBSbatSQLAccess db_CH_M_PRC_SCHDL_TEIGI = null;

	/** テーブルアクセスクラス(進捗)*/
	private JBSbatSQLAccess db_KK_T_PRG = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** FREE項目数 */
	private static final int FREE_ITEM = 2;
	
	/** ファイルID(工事費割賦契約請求実績ファイル) */
// IT1-2018-0000021 MOD START
//	private static final String KJH_KAP_KEI_SIKY_JSK_FILE_ID = "KKIFI038001";
	private static final String KJH_KAP_KEI_SIKY_JSK_FILE_ID = "KKIFI038";
// IT1-2018-0000021 MOD END
	
	/** ファイルID(請求実績未連携工事費割賦契約抽出ファイル) */
	private static final String SJSK_MI_RNK_KJH_KAPK_FILE_ID = "KKIFM777";
	
	/** 修飾子 */
	private static final String FILE_KEISHIKI = ".csv";
	
	/** テーブル名(料金スケジュール定義)*/
	private static final String TABLE_NAME_PRC_SCHDL_TEIGI = "料金スケジュール定義";
	
	/** シーケンス定義名(SEQ_PRG_NO) */
	private static final String SEQ_PRG_NO = "SEQ_PRG_NO";
	
	/** 進捗特記事項１編集用 */
	private static final String PRG_TKJK_1_TEXT = "割賦契約終了年月日：";
	
	/** 内部インターフェイスファイル「工事費割賦契約請求実績ファイル」ファイルパス */
	private String naibuReceiveDirKk = "";
	
	/** 中間ファイル「請求実績未連携工事費割賦契約抽出ファイル」ファイルパス */
	private String workDirKk = "";
	
	/** 入力チェック後連携済List */
	private ArrayList<ArrayList<String>> rnkZmList = null;
	
	/** 連携済工事費割賦契約TBL更新対象List */
	private ArrayList<ArrayList<String>> rnkZmKjhKapKeiUpdList = null;
	
	/** テーブルアクセスクラス(共通部品) */
	private JBSbatSQLAccess stmt = null;
	
	/** 行数(工事費割賦契約請求実績ファイル) */
	private int kkifi038001Row = 0;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_KOJIHI_KAP_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KOJIHI_KAP_KEI);
		db_CH_M_PRC_SCHDL_TEIGI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI);
		db_KK_T_PRG = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_PRG);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// フリー項目値の取得をします。
		String[] freeItem = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);
		
		// パラメータ数チェックをします。
		if (FREE_ITEM != freeItem.length)
		{
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0130CE, new String[]{"FREE"});
		}
		
		// フリー項目値をセットします。
		// 1.内部インターフェイスファイル「工事費割賦契約請求実績ファイル」ファイルパス
		// 2.中間ファイル「請求実績未連携工事費割賦契約抽出ファイル」ファイルパス
		naibuReceiveDirKk = freeItem[0];
		workDirKk= freeItem[1];
		
		// 共通部品用
		stmt = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_PRG);
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @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.割賦請求済金額
		// 11.初回請求サービス契約番号
		// 12.申込明細番号
		// 13.異動区分
		rnkZmKjhKapKeiUpdList = new ArrayList<ArrayList<String>>();
		
		// 請求実績が連携される工事費割賦契約情報抽出
		// 料金管理システムで作成された「工事費割賦契約請求実績ファイル(KKIFI038)」を読み込み、
		// 請求実績連携済の工事費割賦契約TBL更新対象レコードを抽出します。
		String dataWork = "";		// 工事費割賦契約請求実績ファイル1行データ保持
		
		// 「"」を削除したデータを保持します。
		ArrayList<String> dataList = null;
		
		// 入力チェック後連携済Listを生成します。
		rnkZmList = new ArrayList<ArrayList<String>>();
		
		// 工事費割賦契約請求実績ファイルを読込みます。
		ArrayList<String> fileDataList = 
			this.getInputFile(naibuReceiveDirKk + KJH_KAP_KEI_SIKY_JSK_FILE_ID + FILE_KEISHIKI);
		
		// 行数を初期化します。
		kkifi038001Row = 0;
		
		// 工事費割賦契約請求実績ファイル件数分を繰返します。
		for (int i = 0; i < fileDataList.size(); i++)
		{
			// 行数を設定します。
			kkifi038001Row = i + 1;
			
			// レコード１行を取得します。
			dataWork = fileDataList.get(i);
			
			// データを分解します。
			String[] data = dataWork.split(JKKBatConst.CONMA, -1);
			
			// 「"」を削除したデータを保持します。
			dataList = new ArrayList<String>(data.length);
			
			// 「"」を削除します。
			for (int j = 0; j < data.length; j++)
			{
				dataList.add(data[j].replaceAll("\"", ""));
			}
			
			// 単項目チェックを行います。
			this.chkKjhKapKeiSikyJsk(dataList);
			
		}
		
		// 工事費割賦契約、割賦プランTBLより請求実績連携済工事費割賦契約情報取得
		// 入力チェック後連携済List件数分を繰返します。
		for (int i = 0; i < rnkZmList.size(); i++)
		{
			// 入力チェック後連携済Listから１レコード取り出します。
			ArrayList<String> lineList = rnkZmList.get(i);
			
			// 工事費割賦契約番号
			String kojihiKapKeiNo = lineList.get(0);
			super.logPrint.printDebugLog("工事費割賦契約請求実績ファイル.工事費割賦契約番号：" + kojihiKapKeiNo);
			
			// 料金計算対象年月
			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_KOJIHI_KAP_KEI_KK_SELECT_002」
			JBSbatCommonDBInterface outMap002 = this.selectKojihiKapKei002(kojihiKapKeiNo, prcCalcTgYmd);
			
			// 検索結果を判断します。
			if (null != outMap002)
			{
				// 工事費割賦契約TBL更新対象レコード作成
				// 請求実績連携済の工事費割賦契約TBL更新対象レコードを保持します。
				this.setRnkZmKjhKapKeiUpdList(outMap002, lineList);
			}
			else
			{
				// 検索結果なしの場合です。
				// 業務エラーログ出力
				super.logPrint.printDebugLog("工事費割賦契約テーブルに工事費割賦契約番号：" + kojihiKapKeiNo + "が存在しません。");
			}
		}
		
		// 請求年月末日
		String seikyYmLastDay = "";
		
		// 料金スケジュール定義情報取得
		// 料金スケジュール定義TBLを検索し、料金スケジュール定義情報を取得します。
		JBSbatCommonDBInterface outMap022 = this.selectPrcSchdlTeigi022();
		
		// 検索結果を判断します。
		if (null != outMap022)
		{
			// 請求年月
			String seikyYm = JBSbatStringUtil.Rtrim(outMap022.getString(JBSbatCH_M_PRC_SCHDL_TEIGI.SEIKY_YM));
			
			// 「請求年月末日」に請求年月の末日を設定します。
			String lastDay = JBSbatInterface.getEndOfMonth(seikyYm);
			
			// 部品の結果から年月日形式に編集して「請求年月末日」に設定します。
			seikyYmLastDay = seikyYm + lastDay;
		}
		else
		{
			// 検索結果が無い場合は、システムエラーとします。
			throw new JBSbatBusinessException("EKKB0150JE", new String[]{TABLE_NAME_PRC_SCHDL_TEIGI});
		}
		
		// 工事費割賦契約TBL登録／更新 および 進捗TBL登録
		// 請求実績連携済工事費割賦契約情報での工事費割賦契約TBL登録／更新
		// 請求実績連携済工事費割賦契約情報での進捗TBL登録
		// 連携済工事費割賦契約TBL更新対象List件数分を繰返します。
		for (int i = 0; i < rnkZmKjhKapKeiUpdList.size(); i++)
		{
			// 更新対象１レコード格納用Listを生成します。
			ArrayList<String> lineList = new ArrayList<String>();
			
			// 連携済工事費割賦契約TBL更新対象Listより１レコード取得します。
			lineList = rnkZmKjhKapKeiUpdList.get(i);
			
			// 連携済レコードで工事費割賦契約TBL登録／更新を実行します。
			this.insertOrUpdateRnkZmKjhKapKei(lineList);
			
			// 割賦契約ステータス
			String kapKeiStat = lineList.get(4);
			
			// 設定後の割賦契約ステータスが"100"（完了済）の場合
			if (JBSbatKKConst.KAP_KEI_STAT_FIN.equals(kapKeiStat))
			{
				String kapKeiEndymd = lineList.get(5);			// 割賦契約終了年月日
				String firstSeikySvcKeiNo = lineList.get(10);	// 初回請求サービス契約番号
				String mskmDtlNo = lineList.get(11);			// 申込明細番号
				String idoDiv = lineList.get(12);				// 異動区分
				
				// 進捗TBL登録を実行します。
				this.insertPrg(kapKeiEndymd, firstSeikySvcKeiNo, mskmDtlNo, idoDiv);
			}
		}
		
		// 請求実績未連携工事費割賦契約抽出ファイル1行データ保持
		String miRnkDataWork = "";
		
		// 「"」を削除したデータを保持します。
		// 【保持項目】
		// 1.工事費割賦契約番号
		// 2.世代登録年月日時分秒
		// 3.初回請求サービス契約番号
		// 4.申込明細番号
		// 5.異動区分
		ArrayList<String> miRnkDataList = null;
		
		// 請求実績未連携工事費割賦契約抽出ファイルを読込みます。
		ArrayList<String> miRnkFileDataList = 
			this.getInputFile(workDirKk + SJSK_MI_RNK_KJH_KAPK_FILE_ID + FILE_KEISHIKI);
		
		// 請求実績未連携工事費割賦契約情報での工事費割賦契約TBL登録
		// 請求実績未連携工事費割賦契約情報での進捗TBL登録
		// 請求実績未連携工事費割賦契約抽出ファイル件数分を繰返します。
		for (int i = 0; i < miRnkFileDataList.size(); i++)
		{
			// レコード１行を取得します。
			miRnkDataWork = miRnkFileDataList.get(i);
			
			// データを分解します。
			String[] miRnkData = miRnkDataWork.split(JKKBatConst.CONMA, -1);
			
			// 「"」を削除したデータを保持します。
			miRnkDataList = new ArrayList<String>(miRnkData.length);
			
			// 「"」を削除します。
			for (int j = 0; j < miRnkData.length; j++)
			{
				miRnkDataList.add(miRnkData[j].replaceAll("\"", ""));
			}
			
			// 未連携レコードで工事費割賦契約TBL登録を実行します。
			this.insertMiRnkKjhKapKei(miRnkDataList, seikyYmLastDay);
			
			String firstSeikySvcKeiNo = miRnkDataList.get(2);	// 初回請求サービス契約番号
			String mskmDtlNo = miRnkDataList.get(3);			// 申込明細番号
			String idoDiv = miRnkDataList.get(4);				// 異動区分
			
			// 進捗TBL登録を実行します。
			this.insertPrg(seikyYmLastDay, firstSeikySvcKeiNo, mskmDtlNo, idoDiv);
		}
		
		super.logPrint.printDebugLog("execute_END");
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_KOJIHI_KAP_KEI.close();
		db_CH_M_PRC_SCHDL_TEIGI.close();
		db_KK_T_PRG.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		// 共通部品用
		stmt.close();
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_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 executeKK_T_KOJIHI_KAP_KEI_KK_SELECT_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_KK_T_KOJIHI_KAP_KEI.selectBySqlDefine(paramList, KK_T_KOJIHI_KAP_KEI_KK_SELECT_002);
	}

	/**
	 * SQLKEY(KK_SELECT_022)で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_022(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_022);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	KOJIHI_KAP_KEI_NO
	 *		 	GENE_ADD_DTM
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_KOJIHI_KAP_KEI_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("KOJIHI_KAP_KEI_NO", whereParam[0]);
		whereMap.setValue("GENE_ADD_DTM", whereParam[1]);

		// DBアクセスを実行します
		// 排他制御のためselectByPrimaryKeysからselectByPrimaryKeysForUpdateWaitへ手修正
		return db_KK_T_KOJIHI_KAP_KEI.selectByPrimaryKeysForUpdateWait(whereMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	工事費割賦契約番号				KOJIHI_KAP_KEI_NO
	 *		 	世代登録年月日時分				GENE_ADD_DTM
	 *		 	割賦契約ステータス				KAP_KEI_STAT
	 *		 	割賦プランコード				KAP_PLAN_CD
	 *		 	サービス契約回線内訳番号				SVC_KEI_KAISEN_UCWK_NO
	 *		 	初回請求サービス契約番号				FIRST_SEIKY_SVC_KEI_NO
	 *		 	申込明細番号				MSKM_DTL_NO
	 *		 	異動区分				IDO_DIV
	 *		 	割賦一括請求切替年月				KAP_IKT_SIKY_SWCH_YM
	 *		 	割賦契約締結年月日				KAP_KEI_CNC_YMD
	 *		 	割賦契約終了年月日				KAP_KEI_ENDYMD
	 *		 	割賦契約キャンセル年月日				KAP_KEI_CANCEL_YMD
	 *		 	割賦契約サービス開始年月日				KAP_KEI_SVC_STAYMD
	 *		 	割賦契約課金開始年月日				KAP_KEI_CHRG_STAYMD
	 *		 	割賦請求開始年月				KAP_SEIKY_STA_YM
	 *		 	割賦支払い残回数				KAP_PAY_ZAN_CNT
	 *		 	割賦請求済回数				KAP_SEIKY_ZUMI_CNT
	 *		 	割賦請求済金額				KAP_SEIKY_ZUMI_AMNT
	 *		 	登録年月日時分秒				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
	 *		 	分割支払会計計上年月				BUNKATSU_PAY_KAIK_SUMUP_YM
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KOJIHI_KAP_KEI_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("KOJIHI_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("SVC_KEI_KAISEN_UCWK_NO", setParam[4]);
		setMap.setValue("FIRST_SEIKY_SVC_KEI_NO", setParam[5]);
		setMap.setValue("MSKM_DTL_NO", setParam[6]);
		setMap.setValue("IDO_DIV", setParam[7]);
		setMap.setValue("KAP_IKT_SIKY_SWCH_YM", setParam[8]);
		setMap.setValue("KAP_KEI_CNC_YMD", setParam[9]);
		setMap.setValue("KAP_KEI_ENDYMD", setParam[10]);
		setMap.setValue("KAP_KEI_CANCEL_YMD", setParam[11]);
		setMap.setValue("KAP_KEI_SVC_STAYMD", setParam[12]);
		setMap.setValue("KAP_KEI_CHRG_STAYMD", setParam[13]);
		setMap.setValue("KAP_SEIKY_STA_YM", setParam[14]);
		setMap.setValue("KAP_PAY_ZAN_CNT", setParam[15]);
		setMap.setValue("KAP_SEIKY_ZUMI_CNT", setParam[16]);
		setMap.setValue("KAP_SEIKY_ZUMI_AMNT", setParam[17]);
		setMap.setValue("ADD_DTM", setParam[18]);
		setMap.setValue("ADD_OPEACNT", setParam[19]);
		setMap.setValue("UPD_DTM", setParam[20]);
		setMap.setValue("UPD_OPEACNT", setParam[21]);
		setMap.setValue("DEL_DTM", setParam[22]);
		setMap.setValue("DEL_OPEACNT", setParam[23]);
		setMap.setValue("MK_FLG", setParam[24]);
		setMap.setValue("ADD_UNYO_YMD", setParam[25]);
		setMap.setValue("ADD_TRN_ID", setParam[26]);
		setMap.setValue("UPD_UNYO_YMD", setParam[27]);
		setMap.setValue("UPD_TRN_ID", setParam[28]);
		setMap.setValue("DEL_UNYO_YMD", setParam[29]);
		setMap.setValue("DEL_TRN_ID", setParam[30]);
// ANK-3383-00-00 ADD START
		setMap.setValue("BUNKATSU_PAY_KAIK_SUMUP_YM", setParam[31]);
// ANK-3383-00-00 ADD END
		
		// DBアクセスを実行します
		db_KK_T_KOJIHI_KAP_KEI.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	割賦契約終了年月日				KAP_KEI_ENDYMD
	 *		 	割賦請求開始年月				KAP_SEIKY_STA_YM
	 *		 	割賦支払い残回数				KAP_PAY_ZAN_CNT
	 *		 	割賦請求済回数				KAP_SEIKY_ZUMI_CNT
	 *		 	割賦請求済金額				KAP_SEIKY_ZUMI_AMNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	KOJIHI_KAP_KEI_NO
	 *		 	GENE_ADD_DTM
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KOJIHI_KAP_KEI_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("KAP_KEI_ENDYMD", setParam[0]);
		setMap.setValue("KAP_SEIKY_STA_YM", setParam[1]);
		setMap.setValue("KAP_PAY_ZAN_CNT", setParam[2]);
		setMap.setValue("KAP_SEIKY_ZUMI_CNT", setParam[3]);
		setMap.setValue("KAP_SEIKY_ZUMI_AMNT", setParam[4]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("KOJIHI_KAP_KEI_NO", whereParam[0]);
		whereMap.setValue("GENE_ADD_DTM", whereParam[1]);

		// DBアクセスを実行します
		db_KK_T_KOJIHI_KAP_KEI.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	進捗番号				PRG_NO
	 *		 	申込明細番号				MSKM_DTL_NO
	 *		 	請求契約番号				SEIKY_KEI_NO
	 *		 	請求方法番号（口座）				SEIKY_WAY_NO_KOZA
	 *		 	請求方法番号（クレジットカード）				SEIKY_WAY_NO_CRECARD
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	サービス契約内訳番号				SVC_KEI_UCWK_NO
	 *		 	サービス契約回線内訳番号				SVC_KEI_KAISEN_UCWK_NO
	 *		 	機器提供サービス契約番号				KKTK_SVC_KEI_NO
	 *		 	オプションサービス契約番号				OP_SVC_KEI_NO
	 *		 	請求オプションサービス契約番号				SEIOPSVC_KEI_NO
	 *		 	サブオプションサービス契約番号				SBOP_SVC_KEI_NO
	 *		 	割引サービス契約番号				WRIB_SVC_KEI_NO
	 *		 	異動区分				IDO_DIV
	 *		 	異動年月日時分秒				IDO_DTM
	 *		 	進捗ステータス				PRG_STAT
	 *		 	進捗年月日時分秒				PRG_DTM
	 *		 	進捗メモ				PRG_MEMO
	 *		 	進捗特記事項１				PRG_TKJK_1
	 *		 	進捗特記事項２				PRG_TKJK_2
	 *		 	登録年月日時分秒				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_PRG_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("PRG_NO", setParam[0]);
		setMap.setValue("MSKM_DTL_NO", setParam[1]);
		setMap.setValue("SEIKY_KEI_NO", setParam[2]);
		setMap.setValue("SEIKY_WAY_NO_KOZA", setParam[3]);
		setMap.setValue("SEIKY_WAY_NO_CRECARD", setParam[4]);
		setMap.setValue("SVC_KEI_NO", setParam[5]);
		setMap.setValue("SVC_KEI_UCWK_NO", setParam[6]);
		setMap.setValue("SVC_KEI_KAISEN_UCWK_NO", setParam[7]);
		setMap.setValue("KKTK_SVC_KEI_NO", setParam[8]);
		setMap.setValue("OP_SVC_KEI_NO", setParam[9]);
		setMap.setValue("SEIOPSVC_KEI_NO", setParam[10]);
		setMap.setValue("SBOP_SVC_KEI_NO", setParam[11]);
		setMap.setValue("WRIB_SVC_KEI_NO", setParam[12]);
		setMap.setValue("IDO_DIV", setParam[13]);
		setMap.setValue("IDO_DTM", setParam[14]);
		setMap.setValue("PRG_STAT", setParam[15]);
		setMap.setValue("PRG_DTM", setParam[16]);
		setMap.setValue("PRG_MEMO", setParam[17]);
		setMap.setValue("PRG_TKJK_1", setParam[18]);
		setMap.setValue("PRG_TKJK_2", setParam[19]);
		setMap.setValue("ADD_DTM", setParam[20]);
		setMap.setValue("ADD_OPEACNT", setParam[21]);
		setMap.setValue("UPD_DTM", setParam[22]);
		setMap.setValue("UPD_OPEACNT", setParam[23]);
		setMap.setValue("DEL_DTM", setParam[24]);
		setMap.setValue("DEL_OPEACNT", setParam[25]);
		setMap.setValue("MK_FLG", setParam[26]);
		setMap.setValue("ADD_UNYO_YMD", setParam[27]);
		setMap.setValue("ADD_TRN_ID", setParam[28]);
		setMap.setValue("UPD_UNYO_YMD", setParam[29]);
		setMap.setValue("UPD_TRN_ID", setParam[30]);
		setMap.setValue("DEL_UNYO_YMD", setParam[31]);
		setMap.setValue("DEL_TRN_ID", setParam[32]);
	
		// DBアクセスを実行します
		db_KK_T_PRG.insertByPrimaryKeys(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 工事費割賦契約、割賦プランTBLの検索を行います。(KK_SELECT_002)
	 * <br>
	 * @param kojihiKapKeiNo 工事費割賦契約番号
	 * @param prcCalcTgYmd 料金計算対象年月日
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectKojihiKapKei002(String kojihiKapKeiNo, String prcCalcTgYmd) throws Exception
	{
		super.logPrint.printDebugLog("selectKojihiKapKei002_START");
		
		// 工事費割賦契約、割賦プランTBLを検索して請求実績連携済工事費割賦契約情報を取得します。
		// 工事費割賦契約、割賦プランTBL検索条件項目を設定します。
		Object[] paramList = new Object[3];
		
		paramList[0] = prcCalcTgYmd;		// 割賦プラン.割賦プラン適用開始年月日
		paramList[1] = super.opeDate;		// 割賦プラン.予約適用年月日
		paramList[2] = kojihiKapKeiNo;		// 工事費割賦契約.工事費割賦契約番号
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		super.logPrint.printDebugLog("paramList[1]：" + paramList[1]);
		super.logPrint.printDebugLog("paramList[2]：" + paramList[2]);
		
		// 工事費割賦契約、割賦プラン情報検索処理を実行します。
		executeKK_T_KOJIHI_KAP_KEI_KK_SELECT_002(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap = db_KK_T_KOJIHI_KAP_KEI.selectNext();
		
		super.logPrint.printDebugLog("selectKojihiKapKei002_END");
		
		return outDbMap;
	}
	
	/**
	 * 料金スケジュール定義TBLの検索を行います。(KK_SELECT_022)
	 * <br>
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectPrcSchdlTeigi022() throws Exception
	{
		super.logPrint.printDebugLog("selectPrcSchdlTeigi022_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_022(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap = db_CH_M_PRC_SCHDL_TEIGI.selectNext();
		
		super.logPrint.printDebugLog("selectPrcSchdlTeigi022_END");
		
		return outDbMap;
	}
	
	/**
	 * 工事費割賦契約TBLのPK検索を行います。
	 * <br>
	 * @param kojihiKapKeiNo 工事費割賦契約番号
	 * @param geneAddDtm 世代登録年月日時分秒
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectKojihiKapKeiPk(String kojihiKapKeiNo, String geneAddDtm) throws Exception
	{
		super.logPrint.printDebugLog("selectKojihiKapKeiPk_START");
		
		// 工事費割賦契約TBLをPK検索して工事費割賦契約情報を取得します。
		// 工事費割賦契約TBLPK検索条件項目を設定します。
		Object[] whereParamList = new Object[2];
		
		whereParamList[0] = kojihiKapKeiNo;		// 工事費割賦契約番号
		whereParamList[1] = geneAddDtm;			// 世代登録年月日時分秒
		
		super.logPrint.printDebugLog("whereParamList[0]：" + whereParamList[0]);
		super.logPrint.printDebugLog("whereParamList[1]：" + whereParamList[1]);
		super.logPrint.printDebugLog("selectKojihiKapKeiPk_END");
		
		// 工事費割賦契約PK検索処理を実行します。
		return executeKK_T_KOJIHI_KAP_KEI_PKSELECT(whereParamList);
	}
	
	/**
	 * 連携済レコードで工事費割賦契約登録／更新を行います。
	 * <br>
	 * @param lineList 連携済工事費割賦契約更新対象List１レコード
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void insertOrUpdateRnkZmKjhKapKei(ArrayList<String> lineList) throws Exception 
	{
		String kojihiKapKeiNo = lineList.get(0);		// 工事費割賦契約番号
		String geneAddDtm = lineList.get(3);			// 世代登録年月日時分秒
		
		// 工事費割賦契約TBLをキー検索し、工事費割賦契約情報を取得します。
		JBSbatCommonDBInterface kojihiKapKeiMap = this.selectKojihiKapKeiPk(kojihiKapKeiNo, geneAddDtm);
		
		// 工事費割賦契約.割賦契約ステータス
		String kapKeiStat = JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_STAT));
		
		// 割賦契約ステータスが変更される場合
		if (!kapKeiStat.equals(lineList.get(4)))
		{
			String [] setParam = {
					kojihiKapKeiNo,																							// 工事費割賦契約番号
					JBSbatDateUtil.getSystemDateTimeStamp(),																// システム日付時分秒
					lineList.get(4),																						// 割賦契約ステータス
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_PLAN_CD)),				// 割賦プランコード
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.SVC_KEI_KAISEN_UCWK_NO)),	// サービス契約回線内訳番号
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.FIRST_SEIKY_SVC_KEI_NO)),	// 初回請求サービス契約番号
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.MSKM_DTL_NO)),				// 申込明細番号
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.IDO_DIV)),					// 異動区分
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_IKT_SIKY_SWCH_YM)),		// 割賦一括請求切替年月
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_CNC_YMD)),			// 割賦契約締結年月日
					lineList.get(5),																						// 割賦契約終了年月日
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_CANCEL_YMD)),		// 割賦契約キャンセル年月日
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_SVC_STAYMD)),		// 割賦契約サービス開始年月日
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_CHRG_STAYMD)),		// 割賦契約課金開始年月日
					lineList.get(6),																						// 割賦請求開始年月
					lineList.get(7),																						// 割賦支払い残回数
					lineList.get(8),																						// 割賦請求済回数
					lineList.get(9),																						// 割賦請求済金額
					"",																										// 登録年月日時分秒
					"",																										// 登録オペレータアカウント
					"",																										// 更新年月日時分秒
					"",																										// 更新オペレータアカウント
					"",																										// 削除年月日時分秒
					"",																										// 削除オペレータアカウント
					"",																										// 無効フラグ
					"",																										// 登録運用年月日
					"",																										// 登録処理ID
					"",																										// 更新運用年月日
					"",																										// 更新処理ID
					"",																										// 削除運用年月日
// ANK-3383-00-00 MOD START
//					""																										// 削除処理ID
					"",																										// 削除処理ID
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.BUNKATSU_PAY_KAIK_SUMUP_YM))	// 分割支払会計計上年月
// ANK-3383-00-00 MOD END
			};
			
			// 登録処理を実施します。
			executeKK_T_KOJIHI_KAP_KEI_PKINSERT(setParam);
		}
		// 割賦契約ステータスが変更されない場合
		else
		{
			// 更新条件
			String [] whereParam = {
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KOJIHI_KAP_KEI_NO)),			// 工事費割賦契約番号
					JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.GENE_ADD_DTM))				// 世代登録年月日時分秒
			};
			
			// 更新項目
			String [] setParam = {
					lineList.get(5),				// 割賦契約終了年月日
					lineList.get(6),				// 割賦請求開始年月
					lineList.get(7),				// 割賦支払い残回数
					lineList.get(8),				// 割賦請求済回数
					lineList.get(9)					// 割賦請求済金額
			};
			
			// 更新処理を実施します。
			executeKK_T_KOJIHI_KAP_KEI_PKUPDATE(setParam, whereParam);
		}
	}
	
	/**
	 * 未連携レコードで工事費割賦契約登録を行います。
	 * <br>
	 * @param miRnkDataList 未連携工事費割賦契約更新対象List１レコード
	 * @param seikyYmLastDay 請求年月末日
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void insertMiRnkKjhKapKei(ArrayList<String> miRnkDataList, String seikyYmLastDay) throws Exception 
	{
		String kojihiKapKeiNo = miRnkDataList.get(0);	// 工事費割賦契約番号
		String geneAddDtm = miRnkDataList.get(1);		// 世代登録年月日時分秒
		
		// 工事費割賦契約TBLをキー検索し、工事費割賦契約情報を取得します。
		JBSbatCommonDBInterface kojihiKapKeiMap = this.selectKojihiKapKeiPk(kojihiKapKeiNo, geneAddDtm);
		
		String [] setParam = {
				kojihiKapKeiNo,																							// 工事費割賦契約番号
				JBSbatDateUtil.getSystemDateTimeStamp(),																// システム日付時分秒
				JBSbatKKConst.KAP_KEI_STAT_FIN,																			// 割賦契約ステータス
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_PLAN_CD)),				// 割賦プランコード
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.SVC_KEI_KAISEN_UCWK_NO)),	// サービス契約回線内訳番号
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.FIRST_SEIKY_SVC_KEI_NO)),	// 初回請求サービス契約番号
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.MSKM_DTL_NO)),				// 申込明細番号
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.IDO_DIV)),					// 異動区分
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_IKT_SIKY_SWCH_YM)),		// 割賦一括請求切替年月
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_CNC_YMD)),			// 割賦契約締結年月日
				seikyYmLastDay,																							// 割賦契約終了年月日
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_CANCEL_YMD)),		// 割賦契約キャンセル年月日
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_SVC_STAYMD)),		// 割賦契約サービス開始年月日
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_CHRG_STAYMD)),		// 割賦契約課金開始年月日
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_SEIKY_STA_YM)),			// 割賦請求開始年月
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_PAY_ZAN_CNT)),			// 割賦支払い残回数
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_SEIKY_ZUMI_CNT)),		// 割賦請求済回数
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_SEIKY_ZUMI_AMNT)),		// 割賦請求済金額
				"",																										// 登録年月日時分秒
				"",																										// 登録オペレータアカウント
				"",																										// 更新年月日時分秒
				"",																										// 更新オペレータアカウント
				"",																										// 削除年月日時分秒
				"",																										// 削除オペレータアカウント
				"",																										// 無効フラグ
				"",																										// 登録運用年月日
				"",																										// 登録処理ID
				"",																										// 更新運用年月日
				"",																										// 更新処理ID
				"",																										// 削除運用年月日
// ANK-3383-00-00 MOD START
//				""																										// 削除処理ID
				"",																										// 削除処理ID
				JBSbatStringUtil.Rtrim(kojihiKapKeiMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.BUNKATSU_PAY_KAIK_SUMUP_YM))	// 分割支払会計計上年月
// ANK-3383-00-00 MOD END
		};
		
		// 登録処理を実施します。
		executeKK_T_KOJIHI_KAP_KEI_PKINSERT(setParam);
	}
	
	/**
	 * 進捗登録を行います。
	 * <br>
	 * @param tgYmd 割賦契約終了年月日または、請求年月末日
	 * @param firstSeikySvcKeiNo 初回請求サービス契約番号
	 * @param mskmDtlNo 申込明細番号
	 * @param idoDiv 異動区分
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void insertPrg(String tgYmd, String firstSeikySvcKeiNo, String mskmDtlNo, String idoDiv) throws Exception 
	{
		// システム日付を取得します。
		String sysDate = JCCBatCommon.getSysDateTimeStamp();
		
		// 進捗番号（自動採番）
		String prgNo = JBSbatStringUtil.padNumFormString(JBSbatOracleSeqUtil.getNextSeq(commonItem.getConnection(), SEQ_PRG_NO), 12);
		
		// 進捗.異動年月日時分秒取得部品より異動年月日時分秒（またはシステム日付）を取得します。
		String idoDtm = JKKBatCommon. getIdoDtmMax(commonItem, firstSeikySvcKeiNo, idoDiv, stmt);
		
		// 進捗特記事項1
		String prgTkjk1 = PRG_TKJK_1_TEXT + tgYmd;
		
		String [] setParam = {
				prgNo,							// 進捗番号
				mskmDtlNo,						// 申込明細番号
				"",								// 請求契約番号
				"",								// 請求方法番号(口座)
				"",								// 請求方法番号(クレジットカード)
				firstSeikySvcKeiNo,				// サービス契約番号
				"",								// サービス契約内訳番号
				"",								// サービス契約回線内訳番号
				"",								// 機器提供サービス契約番号
				"",								// オプションサービス契約番号
				"",								// 請求オプションサービス契約番号
				"",								// サブオプションサービス契約番号
				"",								// 割引サービス契約番号
				idoDiv,							// 異動区分
				idoDtm,							// 異動年月日時分秒
				JBSbatKKConst.CD00647_PRG_STAT_H030,	// 進捗ステータス
				sysDate,						// 進捗年月日時分秒
				"",								// 進捗メモ
				prgTkjk1,						// 進捗特記事項1
				"",								// 進捗特記事項2
				"",								// 登録年月日時分秒
				"",								// 登録オペレータアカウント
				"",								// 更新年月日時分秒
				"",								// 更新オペレータアカウント
				"",								// 削除年月日時分秒
				"",								// 削除オペレータアカウント
				"",								// 無効フラグ
				"",								// 登録運用年月日
				"",								// 登録処理ID
				"",								// 更新運用年月日
				"",								// 更新処理ID
				"",								// 削除運用年月日
				""								// 削除処理ID
		};
		
		// 登録処理を実施します。
		executeKK_T_PRG_PKINSERT(setParam);
	}
	
	/**
	 *  請求実績連携済の工事費割賦契約TBL更新対象レコードを設定します。
	 * <br>
	 * @param outMap 入出力インターフェースオブジェクト
	 * @param lineList 連携済List１レコード
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private void setRnkZmKjhKapKeiUpdList(JBSbatCommonDBInterface outMap, ArrayList<String> lineList) throws Exception
	{
		super.logPrint.printDebugLog("setRnkZmKjhKapKeiUpdList_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(outMap, prcCalcTgYm);
		
		// 「割賦契約ステータス」の設定を行います。
		String kapKeiStatAft = this.getKapKeiStat(outMap, kapPayZanCntAft);
		
		// 「割賦請求開始年月」の設定を行います。
		String kapSeikyStaYmAft = this.getKapSeikyStaYm(outMap, prcCalcTgYm);
		
		// 「割賦契約終了年月日」の設定を行います。
		String kapKeiEndymdAft = this.getKapKeiEndymd(outMap, kapPayZanCntAft, prcCalcTgYm);
		
		// 「割賦請求済回数」の設定を行います。
		String kapSeikyZumiCntAft = this.getKapSeikyZumiCnt(outMap, kapPayZanCntAft);
		
		// 「割賦請求済金額」の設定を行います。
		String kapSeikyZumiAmntAft = this.getKapSeikyZumiAmnt(outMap, seikyAmnt);
		
		// 各更新項目を連携済List１レコードに保持しておきます。
		// No.1「世代登録年月日時分秒」
		lineList.add(JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.GENE_ADD_DTM)));
		
		// No.2「割賦契約ステータス」
		lineList.add(kapKeiStatAft);
		
		// No.3「割賦契約終了年月日」
		lineList.add(kapKeiEndymdAft);
		
		// No.4「割賦請求開始年月」
		lineList.add(kapSeikyStaYmAft);
		
		// No.5「割賦支払い残回数」
		lineList.add(kapPayZanCntAft);
		
		// No.6「割賦請求済回数」
		lineList.add(kapSeikyZumiCntAft);
		
		// No.7「割賦請求済金額」
		lineList.add(kapSeikyZumiAmntAft);
		
		// No.8「初回請求サービス契約番号」
		lineList.add(JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.FIRST_SEIKY_SVC_KEI_NO)));
		
		// No.9「申込明細番号」
		lineList.add(JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.MSKM_DTL_NO)));
		
		// No.10「異動区分」
		lineList.add(JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.IDO_DIV)));
		
		// 連携済工事費割賦契約TBL更新対象Listに格納します。
		rnkZmKjhKapKeiUpdList.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("初回請求サービス契約番号⇒" + lineList.get(10));
		super.logPrint.printDebugLog("申込明細番号            ⇒" + lineList.get(11));
		super.logPrint.printDebugLog("異動区分                ⇒" + lineList.get(12));
		
		super.logPrint.printDebugLog("setRnkZmKjhKapKeiUpdList_END");
	}
	
	/**
	 *  割賦支払い残回数を取得します。
	 * <br>
	 * @param outMap 入出力インターフェースオブジェクト
	 * @param prcCalcTgYm 料金計算対象年月
	 * @return String 設定後割賦支払い残回数
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getKapPayZanCnt(JBSbatCommonDBInterface outMap, String prcCalcTgYm) throws Exception
	{
		super.logPrint.printDebugLog("getKapPayZanCnt_START");
		
		// 「割賦支払い残回数」の設定を行います。
		String kapPayZanCntAft = "";
		
		// 割賦プランの「割賦販売形態コード」が"01"（一括）の場合、"0"を設定します。
		if (JKKStrConst.CD01467_IKKATSU.equals(JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_M_KAP_PLAN.KAP_HAMBAI_FORM_CD))))
		{
			kapPayZanCntAft = "0";
			super.logPrint.printDebugLog("「割賦販売形態コード」：一括「01」");
		}
		// 割賦プランの「割賦販売形態コード」が"04"（割賦）の場合、割賦契約の「割賦一括請求切替年月」判定を行います。
		else
		{
			super.logPrint.printDebugLog("「割賦販売形態コード」：割賦「04」");
			
			// 工事費割賦契約.割賦支払い残回数
			String kapPayZanCntBef = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_PAY_ZAN_CNT));
			
			// 工事費割賦契約.割賦一括請求切替年月
			String kapIktSikySwchYmBef = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_IKT_SIKY_SWCH_YM));
			super.logPrint.printDebugLog("「工事費割賦契約.割賦一括請求切替年月」：" + kapIktSikySwchYmBef);
			super.logPrint.printDebugLog("「料金計算対象年月」             ：" + prcCalcTgYm);
			
			// 「割賦一括請求切替年月」が未設定の場合、割賦契約の「割賦支払い残回数」に"-1"した値を設定します。
			if (JKKCommonUtil.isNull(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 outMap 入出力インターフェースオブジェクト
	 * @param kapPayZanCntAft 設定後割賦支払い残回数
	 * @return String 設定後割賦契約ステータス
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getKapKeiStat(JBSbatCommonDBInterface outMap, String kapPayZanCntAft) throws Exception
	{
		super.logPrint.printDebugLog("getKapKeiStat_START");
		
		// 「割賦契約ステータス」の設定を行います。
		// 工事費割賦契約.割賦契約ステータス
		String kapKeiStat = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_STAT));
		
		// 設定後の「割賦支払い残回数」が"0"で、工事費割賦契約.割賦契約ステータスが"100"（完了済）未満の場合、
		//   100（完了済）を設定します。
		if ("0".equals(kapPayZanCntAft))
		{
			if (JBSbatKKConst.KAP_KEI_STAT_FIN.compareTo(kapKeiStat) > 0 )
			{
				// 「割賦契約ステータス」に"100"（完了済）を設定します。
				kapKeiStat = JBSbatKKConst.KAP_KEI_STAT_FIN;
				super.logPrint.printDebugLog("割賦契約ステータス変更あり：" + kapKeiStat);
			}
			else
			{
				super.logPrint.printDebugLog("割賦契約ステータスが100（完了済）以上：割賦契約ステータスそのまま" );
			}
		}
		
		super.logPrint.printDebugLog("getKapKeiStat_END");
		return kapKeiStat;
	}
	
	/**
	 *  割賦請求開始年月を取得します。
	 * <br>
	 * @param outMap 入出力インターフェースオブジェクト
	 * @param prcCalcTgYm 料金計算対象年月
	 * @return String 設定後割賦請求開始年月
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getKapSeikyStaYm(JBSbatCommonDBInterface outMap, String prcCalcTgYm) throws Exception
	{
		super.logPrint.printDebugLog("getKapSeikyStaYm_START");
		
		// 「割賦請求開始年月」の設定を行います。
		// 工事費割賦契約.割賦請求開始年月
		String kapSeikyStaYm = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_SEIKY_STA_YM));
		
		// 工事費割賦契約.割賦請求開始年月が未設定の場合、料金計算対象年月を設定します。
		if (JKKCommonUtil.isNull(kapSeikyStaYm))
		{
			// 「割賦請求開始年月」に「料金計算対象年月」を設定します。
			kapSeikyStaYm = prcCalcTgYm;
			super.logPrint.printDebugLog("割賦請求開始年月：" + kapSeikyStaYm);
		}
		
		super.logPrint.printDebugLog("getKapSeikyStaYm_END");
		return kapSeikyStaYm;
	}
	
	/**
	 *  割賦契約終了年月日を取得します。
	 * <br>
	 * @param outMap 入出力インターフェースオブジェクト
	 * @param kapPayZanCntAft 設定後割賦支払い残回数
	 * @param tgYm 料金計算対象年月
	 * @return String 設定後割賦契約終了年月日
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getKapKeiEndymd(JBSbatCommonDBInterface outMap, String kapPayZanCntAft, String tgYm) throws Exception
	{
		super.logPrint.printDebugLog("getKapKeiEndymd_START");
		super.logPrint.printDebugLog("料金計算対象年月                 ：" + tgYm);
		
		// 「割賦契約終了年月日」の設定を行います。
		// 工事費割賦契約.割賦契約終了年月日
		String kapKeiEndymd = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_ENDYMD));
		
		super.logPrint.printDebugLog("工事費割賦契約.割賦契約終了年月日：" + kapKeiEndymd);
		
		// 工事費割賦契約.割賦契約ステータス
		String kapKeiStat = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_STAT));
		
		super.logPrint.printDebugLog("工事費割賦契約.割賦契約ステータス：" + kapKeiStat);
		
		// 設定後の「割賦支払い残回数」が"0"で、工事費割賦契約.割賦契約ステータスが"100"（完了済）未満の場合、
		//   料金計算対象年月の末日を設定します。
		if ("0".equals(kapPayZanCntAft))
		{
			if (JBSbatKKConst.KAP_KEI_STAT_FIN.compareTo(kapKeiStat) > 0 )
			{
				// 「割賦契約終了年月日」に料金計算対象年月の末日を設定します。
				String lastDay = JBSbatInterface.getEndOfMonth(tgYm);
				
				// 部品の結果から年月日形式に編集して「割賦契約終了年月日」に設定します。
				kapKeiEndymd = tgYm + lastDay;
				
				super.logPrint.printDebugLog("設定後割賦契約終了年月日         ：" + kapKeiEndymd);
			}
			else
			{
				super.logPrint.printDebugLog("割賦契約ステータスが100（完了済）以上：割賦契約終了年月日そのまま" );
			}
		}
		else
		{
			super.logPrint.printDebugLog("設定後「割賦支払い残回数」＞0：割賦契約終了年月日設定なし" );
		}
		
		super.logPrint.printDebugLog("getKapKeiEndymd_END");
		return kapKeiEndymd;
	}
	
	/**
	 *  割賦請求済回数を取得します。
	 * <br>
	 * @param outMap 入出力インターフェースオブジェクト
	 * @param kapPayZanCntAft 設定後割賦支払い残回数
	 * @return String 設定後割賦請求済回数
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getKapSeikyZumiCnt(JBSbatCommonDBInterface outMap, String kapPayZanCntAft) throws Exception
	{
		super.logPrint.printDebugLog("getKapSeikyZumiCnt_START");
		
		int intKapPayZanCnt = 0;		// 工事費割賦契約.割賦支払い残回数用変数
		int intKapSeikyZumiCnt = 0;		// 工事費割賦契約.割賦請求済回数用変数
		
		// 「割賦請求済回数」の設定を行います。
		// 工事費割賦契約.割賦支払い残回数
		String kapPayZanCnt = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_PAY_ZAN_CNT));
		
		if (!JKKCommonUtil.isNull(kapPayZanCnt))
		{
			// 工事費割賦契約.割賦支払い残回数
			intKapPayZanCnt = Integer.parseInt(kapPayZanCnt);
		}
		
		// 設定後割賦支払い残回数
		int intKapPayZanCntAft = Integer.parseInt(kapPayZanCntAft);
		
		// 工事費割賦契約.割賦請求済回数
		String kapSeikyZumiCnt = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_SEIKY_ZUMI_CNT));
		
		if (!JKKCommonUtil.isNull(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 outMap 入出力インターフェースオブジェクト
	 * @param seikyAmnt 請求金額
	 * @return String 設定後割賦請求済金額
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getKapSeikyZumiAmnt(JBSbatCommonDBInterface outMap, String seikyAmnt) throws Exception
	{
		super.logPrint.printDebugLog("getKapSeikyZumiAmnt_START");
		
		BigDecimal bgKapSeikyZumiAmnt = new BigDecimal("0");	// 工事費割賦契約.割賦請求済金額用変数
		
		// 「割賦請求済金額」の設定を行います。
		// 工事費割賦契約.割賦請求済金額
		String strKapSeikyZumiAmnt = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_SEIKY_ZUMI_AMNT));
		
		// 取得した工事費割賦契約.割賦請求済金額に値がある場合セットします。
		if (!JKKCommonUtil.isNull(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 fileName ファイル名(フルパス)
	 * @return ファイルデータ
	 * @throws JBSbatBusinessException 
	 * @throws IOException 業務サービス内で発生した例外全般。
	 */	
	private ArrayList<String> getInputFile(String fileName) throws JBSbatBusinessException, IOException
	{
		super.logPrint.printDebugLog("getInputFile_START");
		super.logPrint.printDebugLog(":::::ファイルパス::::::" + fileName);
		
		// ファイル情報保持用Listを生成します。
		ArrayList<String> dataList = new ArrayList<String>();
		BufferedReader br = null;
		
		// ファイルを読み込みます。
		try
		{
			InputStreamReader is = new InputStreamReader(new FileInputStream(fileName), JKKBatConst.SJIS);
			br = new BufferedReader(is);
			
			while (br.ready())
			{
				// 1行読込みます。
				dataList.add(br.readLine());
			}
		}
		catch (IOException e)
		{
			// ファイルがない場合０件と同様とします。
			super.logPrint.printDebugLog("ファイルなし：" + fileName);
		}
		finally
		{
			if (null != br)
			{
				br.close();
			}
		}
		
		super.logPrint.printDebugLog("getInputFile_END");
		
		return dataList;
	}
	
	/**
	 * 工事費割賦契約請求実績ファイル単項目チェックを行います。
	 * <br>
	 * @param dataList 工事費割賦契約請求実績ファイルデータ
	 * @throws Exception 
	 */	
	private void chkKjhKapKeiSikyJsk(ArrayList<String> dataList) throws JBSbatBusinessException
	{
		super.logPrint.printDebugLog("chkKjhKapKeiSikyJsk_START");
		
		int errCunt = 0;
		
		// 工事費割賦契約番号単項目チェック
		if (!isHannkakuESuuji(dataList.get(0), 12, true, "工事費割賦契約請求実績ファイル：工事費割賦契約番号"))
		{
			errCunt++;
		}
		
		// 料金計算対象年月単項目チェック
		if (!isYearMonth(dataList.get(1), true, "工事費割賦契約請求実績ファイル：料金計算対象年月"))
		{
			errCunt++;
		}
		
		// 請求金額単項目チェック
		if (!isHannkakuSuuji2(dataList.get(2), 12, true, "工事費割賦契約請求実績ファイル：請求金額"))
		{
			errCunt++;
		}
		
		// 全ての項目がOKの場合、入力チェック後連携済Listにセットします。
		if (0 == errCunt)
		{
			rnkZmList.add(dataList);
		}
		
		super.logPrint.printDebugLog("chkKjhKapKeiSikyJsk_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.EKKB0580TW, new String[]{String.valueOf(kkifi038001Row), name});
				return false;
			}
			else
			{
				// 必須チェックでない場合で、NULL以外および空文字以外の場合
				// 属性チェックを行います。
				rslt = JCCBatCommon.isHannkakuESuuji1(value);
				
				if (!rslt)
				{
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0600TW, new String[]{String.valueOf(kkifi038001Row), name});
					return false;
				}
				
				// 桁数チェックを行います。
				if (0 < len)
				{
					if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
					{
						// 業務エラーログ出力
						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0590TW, new String[]{String.valueOf(kkifi038001Row), name});
						return false;
					}
				}
			}
		}
		else
		{
			// 必須チェックでない場合でNULL以外および空文字以外
			if (null != value || "".equals(value))
			{
				// 属性チェックを行います。
				rslt = JCCBatCommon.isHannkakuESuuji1(value);
				
				if (!rslt)
				{
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0600TW, new String[]{String.valueOf(kkifi038001Row), name});
					return false;
				}
				
				// 桁数チェックを行います。
				if (0 < len)
				{
					if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
					{
						// 業務エラーログ出力
						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0590TW, new String[]{String.valueOf(kkifi038001Row), 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.EKKB0580TW, new String[]{String.valueOf(kkifi038001Row), name});
				return false;
			}
			else
			{
				// 必須チェックでない場合、NULLでなく、空文字でない場合
				// 年月１の単項目チェック
				rslt = JCCBatCommon.isYearMonth1(value);
				
				// 結果判断
				if (!rslt)
				{
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0600TW, new String[]{String.valueOf(kkifi038001Row), name});
					return false;
				}
			}
		}
		else
		{
			// 必須チェックでない場合、NULLでなく、空文字でない場合
			if (null != value || !"".equals(value))
			{
				// 年月１の単項目チェック
				rslt = JCCBatCommon.isYearMonth1(value);
				
				// 結果判断
				if (!rslt)
				{
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0600TW, new String[]{String.valueOf(kkifi038001Row), 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.EKKB0580TW, new String[]{String.valueOf(kkifi038001Row), name});
				return false;
			}
			else
			{
				// 属性チェックを行います。
				rslt = JCCBatCommon.isHannkakuSuuji2(value);
				
				if (!rslt)
				{
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0600TW, new String[]{String.valueOf(kkifi038001Row), name});
					return false;
				}
				
				// 桁数チェックを行います。
				if (0 < len)
				{
					if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
					{
						// 業務エラーログ出力
						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0590TW, new String[]{String.valueOf(kkifi038001Row), name});
						return false;
					}
				}
			}
		}
		else
		{
			// 必須チェックでない場合、NULLでなく、空文字でない場合
			if (null != value || !"".equals(value))
			{
			
				// 属性チェックを行います。
				rslt = JCCBatCommon.isHannkakuSuuji2(value);
				
				if (!rslt)
				{
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0600TW, new String[]{String.valueOf(kkifi038001Row), name});
					return false;
				}
				
				// 桁数チェックを行います。
				if (0 < len)
				{
					if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
					{
						// 業務エラーログ出力
						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0590TW, new String[]{String.valueOf(kkifi038001Row), name});
						return false;
					}
				}
			}
			else
			{
				rslt = false;
			}
		}
		
		return rslt;
	}
}
