/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKktkSvKeiSaiInfCht
*	ソースファイル名	：JBSbatKKKktkSvKeiSaiInfCht.java
*	作成者				：富士通　
*	作成日				：2011年06月17日
*＜機能概要＞
*　機器提供サービス契約差分情報抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/06/17   富士通		新規作成
*	v3.00.00	2012/06/28   FJ)北守	【IT2-2012-0000711】サービス開始基準対応（一時金）
*	v4.00.00	2013/04/03   AS)新居	【TAI-2012-0000142】サービス課金終了年月日NULLチェック追加
*   v7.00.00    2014/01/30   AS)新居     OM-2013-0003456
*   v8.00.00    2014/03/30   AS)安井     OM-2014-0001015
*   v8.01.00    2014/05/15   FJ)鈴木     OM-2013-0002903
*   v9.00.00    2014/08/06   FJ)沖田     OM-2014-0002640
*   v11.00.00   2014/11/25   FJ)安井     OM-2014-0003702
*   v19.00.00   2015/08/20   FJ)安井     OM-2015-0001096 課金先適用期間変更
*   v20.00.00   2015/11/30   FJ)中山    【OM-2015-0003094】性能改善
*   v23.00.00   2016/02/29   FJ)安井     OM-2016-0000320 回線機器の差分抽出部品へのカレント2レコード連携防止
*                                                        (当事象は差分抽出部品がアドレス参照となるため発生、割引は値参照のため同一事象発生せず)
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JKKBatConst;
import eo.business.common.JKKbatSaiInfChtCommon;
import eo.business.util.file.JBSbatKKIFM019;
import eo.business.util.file.JBSbatKKIFM023;
import eo.business.util.table.JBSbatKK_T_KKTK_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKKktkSvKeiSaiInfCht extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

// OM-2013-0002903対応 20140505 DEL START
//	/** SQL定義キー(KK_SELECT_003)*/
//	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_003 = "KK_SELECT_003";
// OM-2013-0002903対応 20140505 DEL START

	/** ++++++++++ 2013/04/30 追加開始 ++++++++++ */
	/** SQL定義キー(KK_SELECT_142)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_142 = "KK_SELECT_142";

	/** SQL定義キー(KK_SELECT_143)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_143 = "KK_SELECT_143";

	/** SQL定義キー(KK_SELECT_144)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_144 = "KK_SELECT_144";

	/** SQL定義キー(KK_SELECT_145)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_145 = "KK_SELECT_145";

	/** ++++++++++ 2013/04/30 追加終了 ++++++++++ */

	/** SQL定義キー(KK_SELECT_133)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_133 = "KK_SELECT_133";

	/** SQL定義キー(KK_SELECT_083)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_083 = "KK_SELECT_083";

	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 運用月開始日保持の為の変数 */
	private String strSta = null;
	
	/** 運用月終了日保持の為の変数 */
	private String strEnd = null;
	
	/** バッチ運用日保持の為の変数 */
	private String strDate = null;
	
	/** フリー項目[処理月区分] */
	private String free = null;

// OM-2013-0002903対応 20140505 ADD START
	/** フリー項目[親契約識別コード] */
	private String oyaKeiSkbtCd = null;
// OM-2013-0002903対応 20140505 ADD END
	
	/** 前回使用のサービス契約番号 */
	private String svcKeiNo = "";

	/** 前回使用のブレイクキー  OM-2013-0003456 */
	private String svc_break_key = "";
	
	// ++++++++++ 性能改善対応 追加開始 ++++++++++ //
	/** 差分情報抽出共通クラス */
	private JKKbatSaiInfChtCommon saiInfChtCmn = null;
	// ++++++++++ 性能改善対応 追加終了 ++++++++++ //
	
	// ++++++++++ v3.xx.xx 追加開始 ++++++++++ //
	
	/** 親契約識別コード・サービス契約 */
	String oyakeiskbtcdSvc = "01";
	
	/** 親契約識別コード・回線内訳 */
	String oyakeiskbtcdutwk = "02";
	
	/** 親契約識別コード・サービス契約内訳 */
	String oyakeiskbtcdSvcUc = "03";
	
	/** 出力レコード有効判定フラグ */
	boolean yukoflg = false;
	
	/** 出力レコード有効判定フラグ(ネット) */
	boolean Netyukoflg = false;
	
	/** 出力レコード有効判定フラグ(電話) */
	boolean Delyukoflg = false;
	
	/** 料金グループコード(ネット) */
	String prcgrpcdNet = "04";
	
	/** 料金グループコード(電話) */
	String prcgrpcdDel = "10";
	
	/** ネットレコード退避リスト(DBカラム名) */
	ArrayList<ArrayList<String[]>> WkNetdbcolNm = null;
	/** ネットレコード退避リスト(出力ファイル項目名) */
	ArrayList<ArrayList<String[]>> WkNetOutfilecolNm = null;
	/** ネットレコード退避リスト(DB実値) */
	ArrayList<ArrayList<String[]>> WkNetdbValue = null;
	
	/** 電話レコード退避リスト(DBカラム名) */
	ArrayList<ArrayList<String[]>> WkDeldbcolNm = null;
	/** 電話レコード退避リスト(出力ファイル項目名) */
	ArrayList<ArrayList<String[]>> WkDelOutfilecolNm = null;
	/** 電話レコード退避リスト(DB実値) */
	ArrayList<ArrayList<String[]>> WkDeldbValue = null;
	
	/** 住変前レコード退避リスト(DBカラム名) */
	ArrayList<ArrayList<String[]>> WkMtodbcolNm = null;
	/** 住変前レコード退避リスト(出力ファイル項目名) */
	ArrayList<ArrayList<String[]>> WkMtoOutfilecolNm = null;
	/** 住変前レコード退避リスト(DB実値) */
	ArrayList<ArrayList<String[]>> WkMtodbValue = null;
	
	/** 有効レコード退避リスト(DBカラム名) */
	ArrayList<ArrayList<String[]>> WkYukodbcolNm = null;
	/** 有効レコード退避リスト(出力ファイル項目名) */
	ArrayList<ArrayList<String[]>> WkYukoOutfilecolNm = null;
	/** 有効レコード退避リスト(DB実値) */
	ArrayList<ArrayList<String[]>> WkYukodbValue = null;

	/** 異動タイミングチェックレコード退避リスト(DBカラム名) */
	ArrayList<ArrayList<String[]>> WkIdoTmgdbcolNm = null;
	/** 異動タイミングチェックレコード退避リスト(出力ファイル項目名) */
	ArrayList<ArrayList<String[]>> WkIdoTmgOutfilecolNm = null;
	/** 異動タイミングチェックレコード退避リスト(DB実値) */
	ArrayList<ArrayList<String[]>> WkIdoTmgdbValue = null;

	// ++++++++++ v3.xx.xx 追加終了 ++++++++++ //
	
	//▼▼▼OM-2014-0001015▼▼▼
	/** 料金プランコード"PC4301(モデム買取)" */
	private static final String PPLAN_CD_PC4301 = "PC4301";
	//▲▲▲OM-2014-0001015▲▲▲

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// 運用日付取得
		strDate = commonItem.getOpeDate();
		String ym = strDate.substring(0, 6);
		
// OM-2013-0002903対応 20140515 suzuki MOD START
//		// フリー項目[処理月区分]
//		free = commonItem.getFreeItem();
		
		// フリー項目をセミコロン区切りで取得
		String[] freeItems = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);
		
		// フリー項目[処理月区分]
		if(freeItems.length > 0){
			free = freeItems[0];
		}else{
			free = "";
		}
		
		//▼▼▼  重要  ▼▼▼
		commonItem.setFreeItem(free);
		//▲▲▲  重要  ▲▲▲
		
		// フリー項目[親契約識別コード]
		if(freeItems.length > 1){
			oyaKeiSkbtCd = freeItems[1];
		}else{
			oyaKeiSkbtCd = "";
		}
// OM-2013-0002903対応 20140515 suzuki MOD END
		
		// 抽出対象期間を算出
		// 運用日付から当月の月初、月末、翌月月初を算出
		strSta = ym + "01";
		strEnd = ym + JBSbatDateUtil.getEndOfMonth(ym);
		
		// 処理対象が[前月]の場合、前月分の値に編集
		if(JBSbatKKConst.TRAN_TRGT_MON_BF.equals(free))
		{
			strSta = JBSbatDateUtil.adjustMonth(strSta, -1);
			strEnd = JBSbatDateUtil.adjustMonth(strEnd, -1);
		}
		
		// ++++++++++ 性能改善対応 追加開始 ++++++++++ //
		// 差分情報抽出共通クラスインスタンス生成
		saiInfChtCmn = new JKKbatSaiInfChtCommon(commonItem);
		// ++++++++++ 性能改善対応 追加終了 ++++++++++ //

// OM-2013-0002903対応 20140515 suzuki ADD START
		super.logPrint.printDebugLog("### initial end. free=" + free + ", oyaKeiSkbtCd=" + oyaKeiSkbtCd + ", strSta=" + strSta + ", strEnd=" + strEnd);
// OM-2013-0002903対応 20140515 suzuki ADD END

		/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 抽出契約区分取得
		String chshtKeiDiv = inMap.getString(JBSbatKKIFM023.CHSHT_KEI_DIV);
		
		//抽出契約区分の判定
		if(!(JBSbatKKConst.CHSHT_KEI_DIV_30.equals(chshtKeiDiv)))
		{
			//機器提供サービス契約以外が入っている場合はエラー
			throw new Exception();
		}
		
		// 前回と同じサービス契約番号なら処理しない
		if (svcKeiNo.equals(inMap.getString(JBSbatKKIFM023.SVC_KEI_NO)))
		{
			return null;
		}
		svcKeiNo = inMap.getString(JBSbatKKIFM023.SVC_KEI_NO);
		
// OM-2013-0002903対応 20140515 suzuki ADD START
		super.logPrint.printDebugLog("### execute svcKeiNo=" + svcKeiNo + ", chshtKeiDiv=" + chshtKeiDiv);
// OM-2013-0002903対応 20140515 suzuki ADD END
		
		// フリー項目[処理区分]が[キャンセル]の場合には個別SQLを発行
		if(JBSbatKKConst.TRAN_TRGT_CANCEL.equals(free))
		{
			// 機器提供サービス契約情報取得_SQLKEY(KK_SELECT_083)
			executeKK_T_KKTK_SVC_KEI_KK_SELECT_083(getKktkSvcKei_S083Param(inMap));
		// フリー項目[処理区分]が[開始済]の場合には個別SQLを発行
		} else if (JBSbatKKConst.TRAN_TRGT_KAISHI.equals(free)) {
			// 機器提供サービス契約情報取得_SQLKEY(KK_SELECT_133)
			executeKK_T_KKTK_SVC_KEI_KK_SELECT_133(getKktkSvcKei_S133Param(inMap));
		}
		else
		{
// OM-2013-0002903対応 20140308 suzuki DEL START
//			// 機器提供サービス契約情報取得_SQLKEY(KK_SELECT_003)
//			executeKK_T_KKTK_SVC_KEI_KK_SELECT_003(getKktkSvcKei_S003Param(inMap));
//			
//			// ++++++++++ 性能改善対応 変更開始 ++++++++++ //
//			JBSbatCommonDBInterface svInfoSub = db_KK_T_KKTK_SVC_KEI.selectNext();
//			// 取得件数が0件の場合には後続処理不要
//			if(svInfoSub == null)
//			{
//				return null;
//			}
//			
//			String oyaKeiSkbtCd = svInfoSub.getString(JBSbatKK_T_KKTK_SVC_KEI.OYA_KEI_SKBT_CD);
// OM-2013-0002903対応 20140308 suzuki DEL END
			
			if (JBSbatKKConst.OYA_KEI_SKBT_CD_SVC_KEI.equals(oyaKeiSkbtCd))
			{
				// 機器提供サービス契約情報取得_SQLKEY(KK_SELECT_142)
				executeKK_T_KKTK_SVC_KEI_KK_SELECT_142(getKktkSvcKei_S142Param(inMap));
			}
			else if (JBSbatKKConst.OYA_KEI_SKBT_CD_SVC_KEI_UCWK.equals(oyaKeiSkbtCd))
			{
				// 機器提供サービス契約情報取得_SQLKEY(KK_SELECT_143)
				executeKK_T_KKTK_SVC_KEI_KK_SELECT_143(getKktkSvcKei_S143Param(inMap));
			}
			else if (JBSbatKKConst.OYA_KEI_SKBT_CD_OP_SVC_KEI.equals(oyaKeiSkbtCd))
			{
				// 機器提供サービス契約情報取得_SQLKEY(KK_SELECT_144)
				executeKK_T_KKTK_SVC_KEI_KK_SELECT_144(getKktkSvcKei_S144Param(inMap));
			}
			else if (JBSbatKKConst.OYA_KEI_SKBT_CD_KAISEN_TG_SVC_KEI.equals(oyaKeiSkbtCd))
			{
				// 機器提供サービス契約情報取得_SQLKEY(KK_SELECT_145)
				executeKK_T_KKTK_SVC_KEI_KK_SELECT_145(getKktkSvcKei_S145Param(inMap));
			}
			else
			{
				return null;
			}
			// ++++++++++ 性能改善対応 変更終了 ++++++++++ //

		}
		
		// 抽出結果取得
		// ++++++++++ 性能改善対応 変更開始 ++++++++++ //
//		JBSbatCommonDBInterface svInfo = new JBSbatCommonDBInterface();
//		svInfo = db_KK_T_KKTK_SVC_KEI.selectNext();
		JBSbatCommonDBInterface svInfo = db_KK_T_KKTK_SVC_KEI.selectNext();
		// ++++++++++ 性能改善対応 変更終了 ++++++++++ //
		
		// 取得件数が0件の場合には後続処理不要
		if(svInfo == null)
		{
			return null;
		}
		
		// 出力情報格納領域
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		// ++++++++++ 性能改善対応 変更開始 ++++++++++ //
//		// 差分情報抽出共通クラスインスタンス生成
//		// ++++++++++ v3.00.00 変更開始 ++++++++++ //
////		JKKbatSaiInfChtCommon saiInfChtCmn = new JKKbatSaiInfChtCommon();
//		JKKbatSaiInfChtCommon saiInfChtCmn = new JKKbatSaiInfChtCommon(commonItem);
//		// ++++++++++ v3.00.00 変更終了 ++++++++++ //
		saiInfChtCmn.initialize();
		// ++++++++++ 性能改善対応 変更終了 ++++++++++ //
		
		// バッチ運用月月初設定
		saiInfChtCmn.setStrSta(strSta);
		
		// 抽出契約区分設定
		saiInfChtCmn.setChshtKeiDiv(chshtKeiDiv);
		
		// 初回レコードフラグ
		// boolean frstRecFlg = true;
		
		// ++++++++++ v3.xx.xx 追加開始 ++++++++++ //
		// 編集前情報取得領域(DBカラム名)
		ArrayList<String[]> editMaeWkdbcolNm = null;
		// 編集前情報取得領域(出力ファイル項目名)
		ArrayList<String[]> editMaeWkOutfilecolNm = null;
		// 編集前情報取得領域(DB実値)
		ArrayList<String[]> editMaeWkdbValue = null;
		
		// ネット・電話レコード退避リスト初期化
		initialize();
		
		// 前回使用のブレイクキー
		String break_key = "";
		
		// 前回使用のブレイクキーカラム名
		String str_break_key = "";
		
		// 処理一件目レコードフラグ
		boolean svcKeiNofirstflg = true;
		
		// レコードの有効フラグをクリアする
		yukoflg = false;
		
		// 親識別コード判定処理
		if (svInfo != null)
		{
			// 編集前情報取得(DBカラム名)
			editMaeWkdbcolNm = getKeyList(svInfo,0);
			
			// 親契約識別コードが02(回線内訳)の場合
			if (oyakeiskbtcdutwk.equals(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.OYA_KEI_SKBT_CD)))
			{
				// OM-2013-0003456
				// str_break_key = JBSbatKKIFM019.SVC_KEI_KAISEN_UCWK_NO;
				str_break_key = JBSbatKKIFM019.SVC_KEI_NO;
			
			// 親契約識別コードが01(サービス契約)の場合
			} else if (oyakeiskbtcdSvc.equals(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.OYA_KEI_SKBT_CD)))
			{
				str_break_key = JBSbatKKIFM019.SVC_KEI_NO;
			
			// 親契約識別コードが03(サービス契約内訳)の場合
			} else if (oyakeiskbtcdSvcUc.equals(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.OYA_KEI_SKBT_CD)))
			{
				str_break_key = JBSbatKKIFM019.SVC_KEI_UCWK_NO;
			}
		}
		// ++++++++++ v3.xx.xx 追加終了 ++++++++++ //
		
		// 異動タイミングチェックリスト初期化
		initializeIdo();
		
		// 抽出結果全件について出力情報を編集
		while(svInfo != null)
		{
			// 異動タイミングチェック(翌月分の解約回復は連携対象外)
			if(chkIdoTmg(svInfo))
			{
				// チェック結果にて出力対象レコードが存在する場合
				for(int i=0; i < WkIdoTmgdbcolNm.size(); i++)
				{
					// ++++++++++ v3.xx.xx 変更開始 ++++++++++ //
					// 編集前情報取得(DBカラム名)
					editMaeWkdbcolNm = WkIdoTmgdbcolNm.get(i);
					// 編集前情報取得領域(出力ファイル項目名)
					editMaeWkOutfilecolNm = WkIdoTmgOutfilecolNm.get(i);
					// 編集前情報取得領域(DB実値)
					editMaeWkdbValue = WkIdoTmgdbValue.get(i);
					
					// レコード蓄積退避処理が必要な場合
					if(!str_break_key.equals(""))
					{
						// レコード蓄積退避処理が初回の場合
						if (svcKeiNofirstflg)
						{
							// キーブレイクした場合
							if (!break_key.equals("")
								&& !break_key.equals(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, str_break_key)))
							{
								// 有効なレコードが存在しない場合
								if(!yukoflg)
								{
									// 有効レコードチェック処理を行う
									recEscCheck(editMaeWkdbcolNm);
									
									// ブレイクキー単位でレコードが有効である場合
									if (yukoflg)
									{
										// レコード退避処理を行う
										recEsc(editMaeWkdbcolNm,editMaeWkOutfilecolNm,editMaeWkdbValue);
									}
								}
								
								// 処理一件目レコードフラグをクリアする
								svcKeiNofirstflg = false;
							} else
							{
								// 出力領域に入力情報を設定する
								WkMtodbcolNm.add(editMaeWkdbcolNm);
								// 出力領域に入力情報を設定する
								WkMtoOutfilecolNm.add(editMaeWkOutfilecolNm);
								// 出力領域に入力情報を設定する
								WkMtodbValue.add(editMaeWkdbValue);
								
								// 有効レコードチェック処理を行う
								recEscCheck(editMaeWkdbcolNm);
								
								// ブレイクキー単位でレコードが有効である場合
								if (yukoflg)
								{
									// レコード退避処理を行う
									recEsc(editMaeWkdbcolNm,editMaeWkOutfilecolNm,editMaeWkdbValue);
								}
							}
						} else
						{
							// 有効レコードが存在しない、且つキーブレイクした場合
							if(!yukoflg && !break_key.equals(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, str_break_key)))
							{
								// 有効レコードチェック処理を行う
								recEscCheck(editMaeWkdbcolNm);
								
								// ブレイクキー単位でレコードが有効である場合
								if (yukoflg)
								{
									// レコード退避処理を行う
									recEsc(editMaeWkdbcolNm,editMaeWkOutfilecolNm,editMaeWkdbValue);
								}
							}
							
							// 有効レコードが存在し、且つ有効レコードのブレイクキーと同一レコードの場合
//OM-2016-0000320 MOD STA
//							if (yukoflg &&
//								saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, str_break_key).equals(saiInfChtCmn.getKmkVal(WkYukodbcolNm.get(0), str_break_key)))
							else if (yukoflg &&
								saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, str_break_key).equals(saiInfChtCmn.getKmkVal(WkYukodbcolNm.get(0), str_break_key)))
//OM-2016-0000320 MOD END
							{
								// レコード退避処理を行う
								recEsc(editMaeWkdbcolNm,editMaeWkOutfilecolNm,editMaeWkdbValue);
							}
						}
						
						// ブレイクキーを退避する
						break_key = saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, str_break_key);
					
					} else
					{
						// 出力領域に入力情報を設定する
						WkMtodbcolNm.add(editMaeWkdbcolNm);
						// 出力領域に入力情報を設定する
						WkMtoOutfilecolNm.add(editMaeWkOutfilecolNm);
						// 出力領域に入力情報を設定する
						WkMtodbValue.add(editMaeWkdbValue);
					}
				}
				
				// 異動タイミングチェックリスト初期化
				initializeIdo();
			}
			// ++++++++++ v3.xx.xx 変更終了 ++++++++++ //
			// 次レコード取得
			svInfo = db_KK_T_KKTK_SVC_KEI.selectNext();
		}
		
		// 親契約識別コードが回線内訳の場合
		if (oyakeiskbtcdutwk.equals(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.OYA_KEI_SKBT_CD)))
		{
			// 課金中のレコードが存在する場合
			if ((!(WkYukodbcolNm.size() == 0)))
			{
				// 集約情報作成(サービス課金中のレコード)
				for(int i=0; i < WkYukodbcolNm.size(); i++)
				{
					// 出力レコードオミット判定処理を行う
					recYukoCheck(WkYukodbcolNm.get(i),WkYukoOutfilecolNm.get(i),WkYukodbValue.get(i));
				}
			// サービス課金中のレコードが存在しない場合
			} else if (!(WkMtodbcolNm.size() == 0))
			{
				// 集約情報作成(サービス課金中のレコード)
				for(int i=0; i < WkMtodbcolNm.size(); i++)
				{
					// OM-2013-0003456
					if (i == 0){
						svc_break_key = saiInfChtCmn.getKmkVal(WkMtodbcolNm.get(i), str_break_key);
					}
					// 出力レコードオミット判定処理を行う
					//recYukoCheck(WkMtodbcolNm.get(i),WkMtoOutfilecolNm.get(i),WkMtodbValue.get(i));
					// レコード退避処理を行う
					recNotYukoadd(WkMtodbcolNm.get(i),WkMtoOutfilecolNm.get(i),WkMtodbValue.get(i));
				}
			}
			
			// 料金グループコードがネットのレコードが存在する場合
			if ((!(WkNetdbcolNm.size() == 0))
				&& (Netyukoflg || !Delyukoflg))
			{
				// 集約情報作成(親契約識別コードが02(回線内訳)のレコード)
				for(int i=0; i < WkNetdbcolNm.size(); i++)
				{
					// １件目
					if(i==0)
					{
						// 集約情報作成(初回レコード)
						saiInfChtCmn.makeSykInf(WkNetdbcolNm.get(i), WkNetOutfilecolNm.get(i), WkNetdbValue.get(i), true);
					}
					else
					{
						// 集約情報作成(N件目レコード)
						saiInfChtCmn.makeSykInf(WkNetdbcolNm.get(i), WkNetOutfilecolNm.get(i), WkNetdbValue.get(i), false);
					}
				}
			// 料金グループコードが電話のレコードが存在する場合
			} else if (!(WkDeldbcolNm.size() == 0))
			{
				// 集約情報作成(親契約識別コードが02(回線内訳)のレコード)
				for(int i=0; i < WkDeldbcolNm.size(); i++)
				{
					if(i==0)
					{
						// 集約情報作成(初回レコード)
						saiInfChtCmn.makeSykInf(WkDeldbcolNm.get(i), WkDelOutfilecolNm.get(i), WkDeldbValue.get(i), true);
					}
					else
					{
						// 集約情報作成(N件目レコード)
						saiInfChtCmn.makeSykInf(WkDeldbcolNm.get(i), WkDelOutfilecolNm.get(i), WkDeldbValue.get(i), false);
					}
				}
			}
				
			// 有効フラグをクリアする
			Netyukoflg = false;
			Delyukoflg = false;
			
		// 親契約識別コードが回線内訳以外の場合
		} else
		{
			// 課金中のレコードが存在する場合
			if ((!(WkYukodbcolNm.size() == 0)))
			{
				// 集約情報作成(サービス課金中のレコード)
				for(int i=0; i < WkYukodbcolNm.size(); i++)
				{
					// １件目
					if(i==0)
					{
						// 集約情報作成(初回レコード)
						saiInfChtCmn.makeSykInf(WkYukodbcolNm.get(i), WkYukoOutfilecolNm.get(i), WkYukodbValue.get(i), true);
					}
					else
					{
						// 集約情報作成(N件目レコード)
						saiInfChtCmn.makeSykInf(WkYukodbcolNm.get(i), WkYukoOutfilecolNm.get(i), WkYukodbValue.get(i), false);
					}
				}
			// サービス課金中のレコードが存在しない場合
			} else if (!(WkMtodbcolNm.size() == 0))
			{
				// 集約情報作成()
				for(int i=0; i < WkMtodbcolNm.size(); i++)
				{
					if(i==0)
					{
						// 集約情報作成(初回レコード)
						saiInfChtCmn.makeSykInf(WkMtodbcolNm.get(i), WkMtoOutfilecolNm.get(i), WkMtodbValue.get(i), true);
					}
					else
					{
						// 集約情報作成(N件目レコード)
						saiInfChtCmn.makeSykInf(WkMtodbcolNm.get(i), WkMtoOutfilecolNm.get(i), WkMtodbValue.get(i), false);
					}
				}
			}
		}
		
		// 有効レコードフラグクリア
		yukoflg = false;
		// ++++++++++ v3.xx.xx 追加終了 ++++++++++ //
		
		// 編集情報作成
		saiInfChtCmn.makeEditInf();
		
		// 出力情報編集
		saiInfChtCmn.editSaiInf(outputBean);
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	// ++++++++++ v3.xx.xx 追加開始 ++++++++++ //
	/**
	 * 各変数の初期化を行います。
	 */
	public void initialize() {
		// ネットレコード退避リスト(DBカラム名)
		WkNetdbcolNm = new ArrayList<ArrayList<String[]>>();
		// ネットレコード退避リスト(出力ファイル項目名)
		WkNetOutfilecolNm = new ArrayList<ArrayList<String[]>>();
		// ネットレコード退避リスト(DB実値)
		WkNetdbValue = new ArrayList<ArrayList<String[]>>();
		
		// 電話レコード退避リスト(DBカラム名) */
		WkDeldbcolNm = new ArrayList<ArrayList<String[]>>();
		// 電話レコード退避リスト(出力ファイル項目名) */
		WkDelOutfilecolNm = new ArrayList<ArrayList<String[]>>();
		// 電話レコード退避リスト(DB実値) */
		WkDeldbValue = new ArrayList<ArrayList<String[]>>();
		
		// 住変前レコード退避リスト(DBカラム名)
		WkMtodbcolNm = new ArrayList<ArrayList<String[]>>();
		// 住変前レコード退避リスト(出力ファイル項目名)
		WkMtoOutfilecolNm = new ArrayList<ArrayList<String[]>>();
		// 住変前レコード退避リスト(DB実値)
		WkMtodbValue = new ArrayList<ArrayList<String[]>>();
		
		// 有効レコード退避リスト(DBカラム名)
		WkYukodbcolNm = new ArrayList<ArrayList<String[]>>();
		// 有効レコード退避リスト(出力ファイル項目名)
		WkYukoOutfilecolNm = new ArrayList<ArrayList<String[]>>();
		// 有効レコード退避リスト(DB実値)
		WkYukodbValue = new ArrayList<ArrayList<String[]>>();
	}
	// ++++++++++ v3.xx.xx 追加終了 ++++++++++ //
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_KKTK_SVC_KEI.close();
		
		// ++++++++++ 性能改善対応 追加開始 ++++++++++ //
		// 差分情報抽出共通クラスをクローズします。
		saiInfChtCmn.close();
		// ++++++++++ 性能改善対応 追加終了 ++++++++++ //
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
// OM-2013-0002903対応 20140515 suzuki DEL START
//	/**
//	 * SQLKEY(KK_SELECT_003)でDBアクセスを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数でバイント変数を設定します。<br>
//	 *
//	 * 2.DBアクセスを実行します。<br>
//	 * 
//	 * 3.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
//	 *			機器提供サービス契約番号
//	 *		 	バッチ運用日
//	 *			予約適用コード(適用済)
//	 * </pre>
//	 * <p>
//	 * @param param バイント変数の値配列。
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private void executeKK_T_KKTK_SVC_KEI_KK_SELECT_003(Object[] param) throws Exception
//	{
//		// バイント変数のリストを生成します
//		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//		paramList.setValue(param[0].toString());
//		paramList.setValue(param[1].toString());
//		paramList.setValue(param[2].toString());
//		
//		// DBアクセスを実行します
//		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_003);
//	}
// OM-2013-0002903対応 20140515 suzuki DEL END

	/**
	 * SQLKEY(KK_SELECT_133)で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_KKTK_SVC_KEI_KK_SELECT_133(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());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
		paramList.setValue(param[9].toString());
		paramList.setValue(param[10].toString());
		paramList.setValue(param[11].toString());
		paramList.setValue(param[12].toString());
		paramList.setValue(param[13].toString());
		paramList.setValue(param[14].toString());
		paramList.setValue(param[15].toString());
		paramList.setValue(param[16].toString());
		paramList.setValue(param[17].toString());
		
		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_133);
	}

	/**
	 * SQLKEY(KK_SELECT_083)で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_KKTK_SVC_KEI_KK_SELECT_083(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());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
		paramList.setValue(param[9].toString());
		paramList.setValue(param[10].toString());
		paramList.setValue(param[11].toString());
		paramList.setValue(param[12].toString());
		paramList.setValue(param[13].toString());
		paramList.setValue(param[14].toString());
		paramList.setValue(param[15].toString());
		paramList.setValue(param[16].toString());
		paramList.setValue(param[17].toString());
		paramList.setValue(param[18].toString());
		paramList.setValue(param[19].toString());
		paramList.setValue(param[20].toString());
		paramList.setValue(param[21].toString());
		paramList.setValue(param[22].toString());
		paramList.setValue(param[23].toString());
		paramList.setValue(param[24].toString());
		paramList.setValue(param[25].toString());
		paramList.setValue(param[26].toString());
		paramList.setValue(param[27].toString());
		paramList.setValue(param[28].toString());
		paramList.setValue(param[29].toString());
		paramList.setValue(param[30].toString());
		
		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_083);
	}

	/**
	 * SQLKEY(KK_SELECT_142)で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_KKTK_SVC_KEI_KK_SELECT_142(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
//OM-2015-0003094 DEL START
//		paramList.setValue(param[3].toString());
//		paramList.setValue(param[4].toString());
//		paramList.setValue(param[5].toString());
//OM-2015-0003094 DEL END
		
		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_142);
	}

	/**
	 * SQLKEY(KK_SELECT_143)で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_KKTK_SVC_KEI_KK_SELECT_143(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());
//OM-2015-0003094 DEL START
//		paramList.setValue(param[4].toString());
//		paramList.setValue(param[5].toString());
//		paramList.setValue(param[6].toString());
//		paramList.setValue(param[7].toString());
//OM-2015-0003094 DEL END
		
		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_143);
	}

	/**
	 * SQLKEY(KK_SELECT_144)で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_KKTK_SVC_KEI_KK_SELECT_144(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());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
		paramList.setValue(param[9].toString());
		paramList.setValue(param[10].toString());
		paramList.setValue(param[11].toString());
		paramList.setValue(param[12].toString());
		paramList.setValue(param[13].toString());
		paramList.setValue(param[14].toString());
		paramList.setValue(param[15].toString());
		
		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_144);
	}

	/**
	 * SQLKEY(KK_SELECT_145)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	バッチ運用日                              OM-2013-0003456
	 *			機器提供サービス契約番号
	 *		 	バッチ運用日
	 *			機器提供サービス契約番号                  OM-2014-0001015
	 *		 	バッチ運用日                              OM-2014-0001015
	 *			運用月末
	 *			運用月末
	 *			運用月末
	 *			運用月末
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKTK_SVC_KEI_KK_SELECT_145(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());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
//OM-2015-0003094 DEL START
//		paramList.setValue(param[9].toString());
//		//▼▼▼OM-2014-0001015▼▼▼
//		paramList.setValue(param[10].toString());
//		paramList.setValue(param[11].toString());
//		paramList.setValue(param[12].toString());
//		paramList.setValue(param[13].toString());
//		//▲▲▲OM-2014-0001015▲▲▲
//OM-2015-0003094 DEL END
		
		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_145);
	}

	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

// OM-2013-0002903対応 20140515 suzuki DEL START
//	/**
//	 * SQLKEY(KK_SELECT_003)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.パラメータ設定処理。
//	 * </pre>
//	 * <p>
//	 * @param inMap 入力電文
//	 * @return param SQLKEY(KK_SELECT_003)でDBアクセスを実行する際に必要なパラメータ
//	 * @throws Exception 
//	 */
//	private Object[] getKktkSvcKei_S003Param(JBSbatServiceInterfaceMap inMap) throws Exception
//	{
//		Object[] ret_Param = {
//				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
//				strDate,
//				JBSbatKKConst.APLY_STAT_RENKEI
//		};
//		return ret_Param;
//	}
// OM-2013-0002903対応 20140515 suzuki DEL END

	/**
	 * SQLKEY(KK_SELECT_133)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_133)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getKktkSvcKei_S133Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		Object[] ret_Param = {
				strDate,
				strDate,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
				strDate,
				strDate,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
				strDate,
				strDate,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
				strDate,
				strDate,
				strDate,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO)
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_083)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_083)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getKktkSvcKei_S083Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		Object[] ret_Param = {
				JBSbatKKConst.SKBT_SVC,
				JBSbatKKConst.APLY_STAT_RENKEI,
				JBSbatKKConst.APLY_STAT_RENKEI,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
				JBSbatKKConst.SKBT_UTWK,
				JBSbatKKConst.APLY_STAT_RENKEI,
				JBSbatKKConst.APLY_STAT_RENKEI,
				JBSbatKKConst.APLY_STAT_RENKEI,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
				JBSbatKKConst.SKBT_OPSVC,
				JBSbatKKConst.APLY_STAT_RENKEI,
				JBSbatKKConst.SKBT_SVC,
				JBSbatKKConst.APLY_STAT_RENKEI,
				JBSbatKKConst.APLY_STAT_RENKEI,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
				JBSbatKKConst.SKBT_OPSVC,
				JBSbatKKConst.APLY_STAT_RENKEI,
				JBSbatKKConst.SKBT_UTWK,
				JBSbatKKConst.APLY_STAT_RENKEI,
				JBSbatKKConst.APLY_STAT_RENKEI,
				JBSbatKKConst.APLY_STAT_RENKEI,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
				JBSbatKKConst.APLY_STAT_RENKEI,
				JBSbatKKConst.APLY_STAT_RENKEI,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
				JBSbatKKConst.SKBT_KISNUTWK
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_142)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_142)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getKktkSvcKei_S142Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
//OM-2015-0003094 MOD START
//		Object[] ret_Param = {
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				strDate,
//				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
//				JBSbatKKConst.SKBT_SVC,
//				strDate,
//				JBSbatKKConst.APLY_STAT_RENKEI
//		};
		Object[] ret_Param = {
				strDate,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
		};
//OM-2015-0003094 MOD END
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_143)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_143)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getKktkSvcKei_S143Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
//OM-2015-0003094 MOD START
//		Object[] ret_Param = {
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				strDate,
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				strDate,
//				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
//				JBSbatKKConst.SKBT_UTWK,
//				strDate,
//				JBSbatKKConst.APLY_STAT_RENKEI
//		};
		Object[] ret_Param = {
				strDate,
				strDate,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
		};
//OM-2015-0003094 MOD END
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_144)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_144)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getKktkSvcKei_S144Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		Object[] ret_Param = {
				JBSbatKKConst.APLY_STAT_RENKEI,
				strDate,
				JBSbatKKConst.SKBT_SVC,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				JBSbatKKConst.SKBT_OPSVC,
				strDate,
				JBSbatKKConst.APLY_STAT_RENKEI,
				JBSbatKKConst.APLY_STAT_RENKEI,
				strDate,
				JBSbatKKConst.SKBT_UTWK,
				JBSbatKKConst.APLY_STAT_RENKEI,
				strDate,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				JBSbatKKConst.SKBT_OPSVC,
				strDate,
				JBSbatKKConst.APLY_STAT_RENKEI
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_145)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_145)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getKktkSvcKei_S145Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
//OM-2015-0001096 DEL STA
//		String ym = strDate.substring(0, 6);
//		// 運用日付から当月の月末を算出
//		String thisMonthEnd = ym + JBSbatDateUtil.getEndOfMonth(ym);
//OM-2015-0001096 DEL END
		
		//▼▼▼OM-2014-0001015▼▼▼
//		Object[] ret_Param = {
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				strDate,
//				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
//				strDate,
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				JBSbatKKConst.SKBT_KISNUTWK,
//				thisMonthEnd,
//				thisMonthEnd,
//				thisMonthEnd,
//				thisMonthEnd
//		};
//OM-2015-0001096 MOD STA
//		Object[] ret_Param = {
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				strDate,
//				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
//				strDate,
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				JBSbatKKConst.SKBT_KISNUTWK,
//				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
//				strDate,
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				JBSbatKKConst.SKBT_KISNUTWK,
//				thisMonthEnd,
//				thisMonthEnd,
//				thisMonthEnd,
//				thisMonthEnd
//		};
//OM-2015-0003094 MOD START
//		Object[] ret_Param = {
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				strDate,
//				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
//				strDate,
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				JBSbatKKConst.SKBT_KISNUTWK,
//				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
//				strDate,
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				JBSbatKKConst.SKBT_KISNUTWK,
//				strDate,
//				strDate,
//				strDate,
//				strDate
//		};
		Object[] ret_Param = {
				strDate,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
				inMap.getString(JBSbatKKIFM023.SVC_KEI_NO),
				strDate,
				strDate,
				strDate,
				strDate,
				strDate
		};
//OM-2015-0003094 MOD END
//OM-2015-0001096 MOD END
		//▲▲▲OM-2014-0001015▲▲▲
		return ret_Param;
	}
	
	/**
	 * 比較・出力対象情報作成処理
	 * @param svInfo
	 * @param ctlFlg
	 * @return
	 * @throws Exception
	 */
	private ArrayList<String[]> getKeyList(JBSbatCommonDBInterface svInfo, int wrkDiv) throws Exception
	{
		ArrayList<String[]> aryList = new ArrayList<String[]>();
		
		// 集約キー(ListA)ArrayList(String配列:[0]DBカラム名 [1]出力ファイル項目名 [2]DB実値)
		if(wrkDiv == 0)
		{
			// 出力情報定義ArrayList(String配列:[0]DBカラム名 [1]出力ファイル項目名 [2]DB実値)
			aryList.add(setStrctVal(JBSbatKK_T_SVC_KEI.SEIRI_NO,	 					JBSbatKKIFM019.SEIRI_NO, 					svInfo));	// 整理番号
			aryList.add(setStrctVal(JBSbatKK_T_SVC_KEI.SVC_KEI_NO,						JBSbatKKIFM019.SVC_KEI_NO,					svInfo));	// サービス契約番号
			aryList.add(setStrctVal(JBSbatKK_T_SVC_KEI.SVC_CD,							JBSbatKKIFM019.SVC_CD,						svInfo));	// サービスコード
			aryList.add(setStrctVal(JBSbatKK_T_SVC_KEI.PRC_GRP_CD,						JBSbatKKIFM019.PRC_GRP_CD,					svInfo));	// 料金グループコード
			aryList.add(setStrctVal(JBSbatKK_T_SVC_KEI.PCRS_CD,							JBSbatKKIFM019.PCRS_CD,						svInfo));	// 料金コースコード
			// ++++++++++ v3.xx.xx 追加開始 ++++++++++ //
			aryList.add(setStrctVal(JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD,				JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD,		svInfo));	// サービス契約・サービス課金開始年月日
			aryList.add(setStrctVal(JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD,				JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD,		svInfo));	// サービス契約・サービス課金終了年月日
			// ++++++++++ v3.xx.xx 追加終了 ++++++++++ //
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.PPLAN_CD,					JBSbatKKIFM019.PPLAN_CD,					svInfo));	// 料金プランコード
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_CD,				JBSbatKKIFM019.TRGT_KEI_SVC_CD,				svInfo));	// 機器提供サービスコード
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_UCWK_NO,			JBSbatKKIFM019.SVC_KEI_UCWK_NO,				svInfo));	// サービス契約内訳番号
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO,			JBSbatKKIFM019.KKTK_SVC_KEI_NO,				svInfo));	// 機器提供サービス契約番号
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.OP_SVC_KEI_NO,				JBSbatKKIFM019.OP_SVC_KEI_NO,				svInfo));	// オプションサービス契約番号
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.TK_HOSHIKI_KEI_NO,			JBSbatKKIFM019.TK_HOSHIKI_KEI_NO,			svInfo));	// 提供方式契約番号
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.SVC_STA_YMD,				JBSbatKKIFM019.SVC_STAYMD,					svInfo));	// サービス開始年月日
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.SVC_CHRG_STAYMD,			JBSbatKKIFM019.SVC_CHRG_STAYMD,				svInfo));	// サービス課金開始年月日
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.PLAN_CHRG_STAYMD,			JBSbatKKIFM019.PLAN_STAYMD,					svInfo));	// プラン課金開始年月日
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.IDO_DIV,					JBSbatKKIFM019.IDO_DIV,						svInfo));	// 異動区分
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.PLAN_END_SBT_CD,			JBSbatKKIFM019.PLAN_END_SBT_CD,				svInfo));	// プラン終了種別コード
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.PLAN_CHRG_ENDYMD,			JBSbatKKIFM019.PLAN_ENDYMD,					svInfo));	// プラン課金終了年月日
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.SVC_CANCEL_YMD,				JBSbatKKIFM019.SVC_CANCEL_YMD,				svInfo));	// サービスキャンセル年月日
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.SVC_ENDYMD,					JBSbatKKIFM019.SVC_ENDYMD,					svInfo));	// サービス終了年月日
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.SVC_CHRG_ENDYMD,			JBSbatKKIFM019.SVC_CHRG_ENDYMD,				svInfo));	// サービス課金終了年月日
			// ++++++++++ v3.xx.xx 追加開始 ++++++++++ //
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.OYA_KEI_SKBT_CD,			JBSbatKKIFM019.OYA_KEI_SKBT_CD,				svInfo));	// 親契約識別コード
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_KAISEN_UCWK_NO,		JBSbatKKIFM019.SVC_KEI_KAISEN_UCWK_NO,		svInfo));	// サービス契約回線内訳番号
			// ++++++++++ v3.xx.xx 追加終了 ++++++++++ //
			}
		// 解約系項目群(ListB)ArrayList(String配列:[0]DBカラム名 [1]出力ファイル項目名 [2]DB実値)
		else if(wrkDiv == 1)
		{
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.SVC_DSL_YMD,				JBSbatKKIFM019.SVC_DSL_YMD,				svInfo));	// サービス解約年月日
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.PNLTY_HASSEI_CD,			JBSbatKKIFM019.PNLTY_HASSEI_CD,			svInfo));	// 違約金発生コード
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.SVC_DLRE_CD,				JBSbatKKIFM019.SVC_DLRE_CD,				svInfo));	// サービス解約理由
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.KAIHK_YMD,					JBSbatKKIFM019.KAIHK_YMD,				svInfo));	// サービス回復年月日
		}
		// 休止系項目群(ListB)ArrayList(String配列:[0]DBカラム名 [1]出力ファイル項目名 [2]DB実値)
		else if(wrkDiv == 2)
		{
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.PAUSE_STP_CD,			JBSbatKKIFM019.PAUSE_STP_CD,			svInfo));	// 休止中断コード
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.SVC_PAUSE_YMD,			JBSbatKKIFM019.SVC_PAUSE_YMD,			svInfo));	// サービス休止年月日
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.SVC_PAUSE_CHRG_STA_YMD,	JBSbatKKIFM019.SVC_PAUSE_PRC_TSTAYMD,	svInfo));	// サービス休止料金適用開始年月日
			aryList.add(setStrctVal(JBSbatKK_T_KKTK_SVC_KEI.SVC_PAUSE_RLS_YMD,		JBSbatKKIFM019.SVC_PAUSE_RLS_YMD,		svInfo));	// サービス休止解除年月日
		}
		return aryList;
	}

	/**
	 * String型配列に値を設定
	 * [0]：DBカラム名
	 * [1]：出力ファイル項目名
	 * [2]：[0]のカラムのDB値
	 * @param cstName
	 * @param outName
	 * @param svInfo
	 * @return
	 * @throws Exception
	 */
	private String[] setStrctVal(String cstName, String outName, JBSbatCommonDBInterface svInfo) throws Exception
	{
		String[] strctStr = new String[3];
		
		strctStr[0] = cstName;
		strctStr[1] = outName;
		strctStr[2] = svInfo.getString(cstName);
		
		return strctStr;
	}

	/**
	 * <dd>メソッド名	：レコード退避判定処理
	 * <dd>メソッド説明	：サービス課金開始年月日及びサービス課金終了年月日が有効なレコードの判定を行う。
	 * @param  editMaeWkdbcolNm         DBカラム名
	 * @return outMap    出力Map
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void recEscCheck(ArrayList<String[]> editMaeWkdbcolNm) throws Exception
	{
		//▼▼▼OM-2014-0001015▼▼▼
		//月末日
		String MonEnd = strEnd;
		//▲▲▲OM-2014-0001015▲▲▲
		
		// 世代登録年月日時分秒が最新のレコードに対してのみ有効チェックを行う
		if (WkYukodbcolNm.size() == 0)
		{
			//▼▼▼OM-2014-0001015▼▼▼
//OM-2014-0003702 MOD STA
//			if(!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.PRC_GRP_CD)) 
//				&& !isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.PPLAN_CD)) 
//				&& prcgrpcdNet.equals(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.PRC_GRP_CD))
//				&& PPLAN_CD_PC4301.equals(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.PPLAN_CD)))
			if(!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.PPLAN_CD)) 
				&& PPLAN_CD_PC4301.equals(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.PPLAN_CD)))
//OM-2014-0003702 MOD END
			{
				//料金プランコード"PC4301(モデム買取)"の場合、月末日を翌月末に設定
				MonEnd = JBSbatDateUtil.adjustMonth(strEnd, 1);
			}
			// サービス課金開始年月日が月末以前且つサービス課金終了年月日が月初以降の場合
//			if ((!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD))
//				&& (strEnd.compareTo(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD)) > 0))
//				&& (!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD))
//				&& (strSta.compareTo(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD)) < 0)))
			// ▼▼▼OM-2014-0002640▼▼▼ MOD START サービス契約・サービス課金開始年月日、サービス契約・サービス課金終了年月日の比較に等号を付加
			if ((!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD))
				&& (MonEnd.compareTo(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD)) >= 0))
				&& (!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD))
				&& (strSta.compareTo(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD)) <= 0)))
			// ▲▲▲OM-2014-0002640▲▲▲ MOD END
			//▲▲▲OM-2014-0001015▲▲▲
			{
				// レコード有効フラグをオンする
				yukoflg = true;
			}
		}
	}

	/**
	 * <dd>メソッド名	：レコード退避処理
	 * <dd>メソッド説明	：サービス課金開始年月日及びサービス課金終了年月日が有効なレコードの退避処理を行う。
	 * @param  editMaeWkdbcolNm         DBカラム名
	 * @param  editMaeWkOutfilecolNm    出力ファイル項目名
	 * @param  editMaeWkdbValue         DB実値
	 * @return outMap    出力Map
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void recEsc(ArrayList<String[]> editMaeWkdbcolNm ,ArrayList<String[]> editMaeWkOutfilecolNm ,ArrayList<String[]> editMaeWkdbValue) throws Exception
	{
		// 出力領域に入力情報を設定する
		WkYukodbcolNm.add(editMaeWkdbcolNm);
		// 出力領域に入力情報を設定する
		WkYukoOutfilecolNm.add(editMaeWkOutfilecolNm);
		// 出力領域に入力情報を設定する
		WkYukodbValue.add(editMaeWkdbValue);
	}

	// ++++++++++ v3.xx.xx 追加開始 ++++++++++ //
	/**
	 * <dd>メソッド名	：TG1-227対応
	 * <dd>メソッド説明	：1.親契約識別コードが回線内訳（02）のレコードを料金グループコード毎に退避し、
	 *                      サービス課金開始年月日及びサービス課金終了年月日が有効なレコードの判定を行う。
	 * @param  editMaeWkdbcolNm         DBカラム名
	 * @param  editMaeWkOutfilecolNm    出力ファイル項目名
	 * @param  editMaeWkdbValue         DB実値
	 * @return outMap    出力Map
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void recYukoCheck(ArrayList<String[]> editMaeWkdbcolNm ,ArrayList<String[]> editMaeWkOutfilecolNm ,ArrayList<String[]> editMaeWkdbValue) throws Exception
	{
		//▼▼▼OM-2014-0001015▼▼▼
		//月末日
		String MonEnd = strEnd;
		//▲▲▲OM-2014-0001015▲▲▲
		
		// TAI-2012-0000142 サービス課金終了年月日NULLチェック追加
		// 世代登録年月日時分秒が最新のレコードに対してのみ有効チェックを行う
		if (WkNetdbcolNm.size() == 0)
		{
			if (isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD)))
			{
				// 出力領域に入力情報を設定する
				WkDeldbcolNm.add(editMaeWkdbcolNm);
				// 出力領域に入力情報を設定する
				WkDelOutfilecolNm.add(editMaeWkOutfilecolNm);
				// 出力領域に入力情報を設定する
				WkDeldbValue.add(editMaeWkdbValue);
				return;
			}
		}

//OM-2014-0003702 ADD STA
		if(!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.PPLAN_CD))
			&& PPLAN_CD_PC4301.equals(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.PPLAN_CD)))
		{
			//料金プランコード"PC4301(モデム買取)"の場合、月末日を翌月末に設定
			MonEnd = JBSbatDateUtil.adjustMonth(strEnd, 1);
		}
//OM-2014-0003702 ADD END
		// 入力情報の料金グループコードが04(ネット)の場合
		if (saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.PRC_GRP_CD).equals(prcgrpcdNet))
		{
			// 世代登録年月日時分秒が最新のレコードに対してのみ有効チェックを行う
			if (WkNetdbcolNm.size() == 0)
			{
				//▼▼▼OM-2014-0001015▼▼▼
//OM-2014-0003702 DEL STA
//				if(!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.PPLAN_CD))
//					&& PPLAN_CD_PC4301.equals(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.PPLAN_CD)))
//				{
//					//料金グループコード"04(ネットマンション)"かつ機器提供サービスコード"C005(モデム)"の場合、月末日を翌月末に設定
//					MonEnd = JBSbatDateUtil.adjustMonth(strEnd, 1);
//				}
//OM-2014-0003702 DEL END
				// サービス課金開始年月日が月末以前且つサービス課金終了年月日が月初以降の場合
//				if ((!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD))
//					&& (strEnd.compareTo(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD)) > 0))
//					&& (!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD))
//					&& (strSta.compareTo(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD)) < 0)))
				// ▼▼▼OM-2014-0002640▼▼▼ MOD START サービス契約・サービス課金開始年月日、サービス契約・サービス課金終了年月日の比較に等号を付加
				if ((!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD))
					&& (MonEnd.compareTo(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD)) >= 0))
					&& (!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD))
					&& (strSta.compareTo(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD)) <= 0)))
				// ▲▲▲OM-2014-0002640▲▲▲ MOD END
				//▲▲▲OM-2014-0001015▲▲▲
				{
					// ネットレコードの有効フラグをオンする
					Netyukoflg = true;
				}
			}
			
			// 出力領域に入力情報を設定する
			WkNetdbcolNm.add(editMaeWkdbcolNm);
			// 出力領域に入力情報を設定する
			WkNetOutfilecolNm.add(editMaeWkOutfilecolNm);
			// 出力領域に入力情報を設定する
			WkNetdbValue.add(editMaeWkdbValue);
			
		// 入力情報の料金グループコードが10(電話)の場合
		} else
		{
			// 世代登録年月日時分秒が最新のレコードに対してのみ有効チェックを行う
			if (WkDeldbcolNm.size() == 0)
			{
				// サービス課金開始年月日が月末以前且つサービス課金終了年月日が月初以降の場合
				// ▼▼▼OM-2014-0002640▼▼▼ MOD START サービス契約・サービス課金開始年月日、サービス契約・サービス課金終了年月日の比較に等号を付加
//OM-2014-0003702 MOD STA
//				if ((!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD))
//					&& (strEnd.compareTo(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD)) >= 0))
//					&& (!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD))
//					&& (strSta.compareTo(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD)) <= 0)))
				if ((!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD))
					&& (MonEnd.compareTo(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD)) >= 0))
					&& (!isNullBlunk(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD))
					&& (strSta.compareTo(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD)) <= 0)))
//OM-2014-0003702 MOD END
				// ▲▲▲OM-2014-0002640▲▲▲ MOD END
				{
					// 電話レコードの有効フラグをオンする
					Delyukoflg = true;
				}
			}
			
			// 出力領域に入力情報を設定する
			WkDeldbcolNm.add(editMaeWkdbcolNm);
			// 出力領域に入力情報を設定する
			WkDelOutfilecolNm.add(editMaeWkOutfilecolNm);
			// 出力領域に入力情報を設定する
			WkDeldbValue.add(editMaeWkdbValue);
		}
	}

	/**
	 * <dd>メソッド名	：OM-2013-0003456対応
	 * <dd>メソッド説明	：1.親契約識別コードが回線内訳（02）のレコードをサービス契約番号が変わるまで退避する。
	 *                      ※有効でないレコード
	 * @param  editMaeWkdbcolNm         DBカラム名
	 * @param  editMaeWkOutfilecolNm    出力ファイル項目名
	 * @param  editMaeWkdbValue         DB実値
	 * @return outMap    出力Map
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void recNotYukoadd(ArrayList<String[]> editMaeWkdbcolNm ,ArrayList<String[]> editMaeWkOutfilecolNm ,ArrayList<String[]> editMaeWkdbValue) throws Exception
	{
		// サービス契約番号が同じ場合に退避する
		if (svc_break_key.equals(saiInfChtCmn.getKmkVal(editMaeWkdbcolNm,  JBSbatKKIFM019.SVC_KEI_NO)))
		{
			// 入力情報の料金グループコードが04(ネット)の場合
			if (saiInfChtCmn.getKmkVal(editMaeWkdbcolNm, JBSbatKKIFM019.PRC_GRP_CD).equals(prcgrpcdNet))
			{
				// 出力領域に入力情報を設定する
				WkNetdbcolNm.add(editMaeWkdbcolNm);
				// 出力領域に入力情報を設定する
				WkNetOutfilecolNm.add(editMaeWkOutfilecolNm);
				// 出力領域に入力情報を設定する
				WkNetdbValue.add(editMaeWkdbValue);
				
			// 入力情報の料金グループコードが10(電話)の場合
			} else{
				// 出力領域に入力情報を設定する
				WkDeldbcolNm.add(editMaeWkdbcolNm);
				// 出力領域に入力情報を設定する
				WkDelOutfilecolNm.add(editMaeWkOutfilecolNm);
				// 出力領域に入力情報を設定する
				WkDeldbValue.add(editMaeWkdbValue);
			}
		}
			
	}

	/**
	 * 翌月異動情報のオミット判定をします。
	 * @param  svInfo    データ取得情報Map
	 * @return outMap    判定結果(true:有効レコード/false:不要レコード)
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean chkIdoTmg(JBSbatCommonDBInterface svInfo) throws Exception
	{
		boolean rtnFlg = false;
		
		// 編集前情報取得(DBカラム名)
		WkIdoTmgdbcolNm.add(getKeyList(svInfo,0));
		// 編集前情報取得領域(出力ファイル項目名)
		WkIdoTmgOutfilecolNm.add(getKeyList(svInfo,1));
		// 編集前情報取得領域(DB実値)
		WkIdoTmgdbValue.add(getKeyList(svInfo,2));
		
		// 回復年月日
		String kihkYmd = svInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.KAIHK_YMD);
		// 解約年月日
		String dslYmd = svInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.SVC_DSL_YMD);
		// 課金終了年月日
		String chrgEndYmd = svInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.PLAN_CHRG_ENDYMD);
		// 解約年月日が設定されている場合
		if(null != dslYmd && 0 != dslYmd.length())
		{
			// 課金終了日が月末以前だった場合
			if(chrgEndYmd.compareTo(strEnd) <= 0)
			{
				rtnFlg = true;
			} else
			{
				// 異動タイミングチェックリスト初期化
//				initialize();
				initializeIdo();
			}
			
		// 回復年月日が未設定の場合
		} else if (!(null != kihkYmd && 0 != kihkYmd.length()))
		{
			rtnFlg = true;
		}
		
		return rtnFlg;
	}

	/**
	 * 各変数の初期化を行います。
	 */
	public void initializeIdo() {
		// ネットレコード退避リスト(DBカラム名)
		WkIdoTmgdbcolNm = new ArrayList<ArrayList<String[]>>();
		// ネットレコード退避リスト(出力ファイル項目名)
		WkIdoTmgOutfilecolNm = new ArrayList<ArrayList<String[]>>();
		// ネットレコード退避リスト(DB実値)
		WkIdoTmgdbValue = new ArrayList<ArrayList<String[]>>();
	}

	/**
	 * null、空文字を判定
	 * @param str
	 * @return true:値なし／false:値あり
	 */
	private boolean isNullBlunk(String str)
	{
		if (str == null || str.equals(""))
		{
			return true;
		}
		return false;
	}
	// ++++++++++ v3.xx.xx 追加開始 ++++++++++ //
}
