/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKCoursHenInfoFileChsht
*	ソースファイル名	：JBSbatKKCoursHenInfoFileChsht.java
*	作成者				：富士通　
*	作成日				：2012年02月17日
*＜機能概要＞
*　コース変更情報ファイル抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/02/17   富士通		新規作成
*	v5.00.00	2013/01/04   藤本		【ANK-1273-00-00】eoモバイル3G　eo64移行プランの乗換対応
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.model.base.jcc.util.JCCJapaneseCalendar;
import com.fujitsu.futurity.model.base.jcc.util.JCCWestCalendar;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.common.JKKBatStringUtil;
import eo.business.util.table.JBSbatKK_T_IDO_RSV;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_EOMOBA;
import eo.business.util.table.JBSbatTN_T_TAKNKIKI;
import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JPCDateUtil;
import eo.framework.application.JBSbatBusinessError;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.log.JBSbatLogPrintControl;
import eo.framework.util.JCCBatchEsbInterface;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKCoursHenInfoFileChsht extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(サービス契約＜eoモバイル＞)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_EOMOBA = "KK_T_SVC_KEI_EOMOBA";

	/** SQL定義キー(KK_INSERT_002)*/
	private static final String KK_T_SVC_KEI_KK_INSERT_002 = "KK_INSERT_002";

	/** SQL定義キー(KK_INSERT_001)*/
	private static final String KK_T_SVC_KEI_EOMOBA_KK_INSERT_001 = "KK_INSERT_001";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String KK_T_SVC_KEI_EOMOBA_KK_SELECT_002 = "KK_SELECT_002";

	/** テーブルアクセスクラス(割引サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(一時金設定)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_EOMOBA = null;

	/** 料金コースコード(光ハイブリッドタイプ) */
	private static final String PCRS_CD_A59 = "A59";

	// KT1-2013-0000275 2013/03/05 START
	// ハイブリッドプラン⇒３Ｇ　７．２Ｍ　光ハイブリッドタイプ
	// ルータープラン⇒３Ｇ　７．２Ｍ　通常プラン
	/** 変更後コース(ハイブリットコース) */
	private static final String PCRS_NM_HIBRID = "３Ｇ　７．２Ｍ　光ハイブリッドタイプ";

	/** 変更後コース(ルーターコース) */
	private static final String PCRS_NM_ROUTER = "３Ｇ　７．２Ｍ　通常プラン";
	// KT1-2013-0000275 2013/03/05 END

	/** 改行コード */
	private static final String LF  = "LF";
	
	// IT1-2013-0000221 ADD START
	/** 改行コード */
	private static final String CRLF  = "CR+LF";
	// IT1-2013-0000221 ADD END

	/** 文字コード */
	private static final String SJIS  = JKKBatConst.SJIS;

	/** カンマ */
	private static final String CAM  = JKKBatConst.S_SEP_CAM;

	/** ファイル括り文字 */
	private static final String SCOPE  = "\"";

	/** 業務パラメータID(タイトル１) */
	private static final String ID_TITLE1  = "KK_CRSCHGINFO_TITLE1";

	/** 業務パラメータID(タイトル２) */
	private static final String ID_TITLE2  = "KK_CRSCHGINFO_TITLE2";

	/** 業務パラメータID(依頼元名称) */
	private static final String ID_IRAIMOTO_NAME  = "KK_CRSCHGINFO_IRAIMT";

	/** 業務パラメータID(タイトル３) */
	private static final String ID_TITLE3  = "KK_CRSCHGINFO_TITLE3";

	/** 業務パラメータID(担当者１) */
	private static final String ID_TANTO1  = "KK_CRSCHGINFO_TANTO1";

	/** 業務パラメータID(担当者２) */
	private static final String ID_TANTO2  = "KK_CRSCHGINFO_TANTO2";

	/** 業務パラメータID(担当者３) */
	private static final String ID_TANTO3  = "KK_CRSCHGINFO_TANTO3";

	/** 業務パラメータID(タイトル４) */
	private static final String ID_TITLE4  = "KK_CRSCHGINFO_TITLE4";

	/** 業務パラメータID(電話番号１) */
	private static final String ID_TEL1  = "KK_CRSCHGINFO_TEL1";

	/** 業務パラメータID(電話番号２) */
	private static final String ID_TEL2  = "KK_CRSCHGINFO_TEL2";

	/** 業務パラメータID(電話番号３) */
	private static final String ID_TEL3  = "KK_CRSCHGINFO_TEL3";

	/** 業務パラメータID(タイトル５) */
	private static final String ID_TITLE5  = "KK_CRSCHGINFO_TITLE5";

	/** 業務パラメータID(メールアドレス１) */
	private static final String ID_MAIL1  = "KK_CRSCHGINFO_MAIL1";

	/** 業務パラメータID(メールアドレス２) */
	private static final String ID_MAIL2  = "KK_CRSCHGINFO_MAIL2";

	/** 業務パラメータID(メールアドレス３) */
	private static final String ID_MAIL3  = "KK_CRSCHGINFO_MAIL3";

	/** 業務パラメータID(タイトル６) */
	private static final String ID_TITLE6  = "KK_CRSCHGINFO_TITLE6";

	/** 業務パラメータID(適応年月) */
	private static final String ID_APLY_YM  = "KK_CRSCHGINFO_TEKIYM";

	/** 業務パラメータID(タイトル６−１) */
	private static final String ID_TITLE6_1  = "KK_CRSCHGINFO_TTL6_1";

	/** 業務パラメータID(タイトル７) */
	private static final String ID_TITLE7  = "KK_CRSCHGINFO_TITLE7";

	/** 業務パラメータID(タイトル８) */
	private static final String ID_TITLE8  = "KK_CRSCHGINFO_TITLE8";

	/** 業務パラメータID(タイトル９) */
	private static final String ID_TITLE9  = "KK_CRSCHGINFO_TITLE9";

	/** 業務パラメータID(タイトル９−１) */
	private static final String ID_TITLE9_1  = "KK_CRSCHGINFO_TTL9_1";

	/** 業務パラメータID(タイトル９−２) */
	private static final String ID_TITLE9_2  = "KK_CRSCHGINFO_TTL9_2";

	/** 業務パラメータID(タイトル１０) */
	private static final String ID_TITLE10  = "KK_CRSCHGINFO_TTL10";

	/** 業務パラメータID(タイトル１０−１) */
	private static final String ID_TITLE10_1  = "KK_CRSCHGINFO_TL10_1";

	/** 業務パラメータID(タイトル１０−２) */
	private static final String ID_TITLE10_2  = "KK_CRSCHGINFO_TL10_2";

	/** 業務パラメータID(タイトル１０−３) */
	private static final String ID_TITLE10_3  = "KK_CRSCHGINFO_TL10_3";

	// ANK-1273-00-00 eoモバイル3G　eo64移行プランの乗換対応 2013/01/04 START
	/** 業務パラメータID(eo64移行乗換プラン) */
	private static final String ID_PPLAN_EO64  = "KK_PPLAN_EO64";

	/** 業務パラメータ設定値 eo64乗換移行プランの区切り文字 */
	private static final String PPLAN_EO64_LIST_SEP = ",";

	/** 業務パラメータ設定値 eo64乗換移行プランの変更前・変更後料金プランコードの区切り文字 */
	private static final String PPLAN_EO64_BF_AF_SEP = ":";
	// ANK-1273-00-00 eoモバイル3G　eo64移行プランの乗換対応 2013/01/04 END

	// IT1-2012-0000986 2012/09/05 start 
	/**
	 * サービスインターフェース正常
	 */
	private static final String SIF_SEIJO = "0000";
	// IT1-2012-0000986 2012/09/05 end 
	
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_SVC_KEI_EOMOBA = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_EOMOBA);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		// ANK-1273-00-00 eoモバイル3G　eo64移行プランの乗換対応 2013/01/04 START
		// 2レコード目以降は処理しないよう修正
		// ※1レコード目の処理で、シェルから実行しているSQLと同じSQL(KK_T_SVC_KEI_EOMOBA.KK_SELECT_002)を発行し、
		// 　全レコードを出力しているため、以降は処理する必要がないが、レコード件数分無用な検索が行われてしまっている。
		if (1 < super.commonItem.getInputCount())
		{
			return null;
		}
		// ANK-1273-00-00 eoモバイル3G　eo64移行プランの乗換対応 2013/01/04 END

		// 運用日付を取得
		String opeDate = commonItem.getOpeDate();
		
		// 運用日付に紐付くコース変更情報を取得
		Object[] whereParam = {
				opeDate
		};
		executeKK_T_SVC_KEI_EOMOBA_KK_SELECT_002(whereParam);
		
		// 取得したコース変更情報を格納
		List<JBSbatCommonDBInterface> outList = new ArrayList<JBSbatCommonDBInterface>();
		JBSbatCommonDBInterface defMap = null;
		// ANK-1273-00-00 eoモバイル3G　eo64移行プランの乗換対応 2013/01/04 START
		// 業務パラメータ管理からeo64移行乗換プランを取得
		List<String> eo64PplanList = getEo64PplanList();
		// ANK-1273-00-00 eoモバイル3G　eo64移行プランの乗換対応 2013/01/04 END
		while ((defMap = db_KK_T_SVC_KEI_EOMOBA.selectNext()) != null){
			// ANK-1273-00-00 eoモバイル3G　eo64移行プランの乗換対応 2013/01/04 START
			// ファイル出力するかどうか
			boolean isFileOut = true;
			for (String eo64Pplan : eo64PplanList)
			{
				// 旧・新料金プランコードが、eo64移行プラン乗換対象の場合
				String[] eo64PplanBfAf = eo64Pplan.split(PPLAN_EO64_BF_AF_SEP);
				String oldPplanCd = defMap.getString(JBSbatKK_T_IDO_RSV.OLD_PPLAN_CD);
				String newPplanCd = defMap.getString(JBSbatKK_T_IDO_RSV.NEW_PPLAN_CD);
				if (null != eo64PplanBfAf && 2 == eo64PplanBfAf.length
					&& eo64PplanBfAf[0].equals(oldPplanCd)
					&& eo64PplanBfAf[1].equals(newPplanCd))
				{
					// 処理対象外
					super.logPrint.printDebugLog("eo64移行プラン乗換対象のコース変更のため処理対象外"
						+ " サービス契約番号[" + defMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO) + "]"
						+ " 旧料金プランコード[" + oldPplanCd + "] 新料金プランコード[" + newPplanCd + "]");
					isFileOut = false;
					break;
				}
			}
			if (isFileOut)
			{
				outList.add(defMap);
			}
			// ANK-1273-00-00 eoモバイル3G　eo64移行プランの乗換対応 2013/01/04 END
		}
		// 以降の処理はリストが0件の場合、以降の処理は行わない。
		if (outList.isEmpty()) {
			return null;
		}
		
		// IT1-2012-0000986 2012/09/05 start 
		//宅内機器からMSISDNを検索
		callKKSV0691(outList);
		// IT1-2012-0000986 2012/09/05 end 
		
		// コース変更情報ファイルを出力する。
		JBSbatOutputFileUtil outFile = new JBSbatOutputFileUtil(commonItem.getFreeItem());
		outFile.setEncode(SJIS);
		// IT1-2013-0000221 2013/02/11 MOD START
		//outFile.setLine(LF);
		outFile.setLine(CRLF);
		// IT1-2013-0000221 2013/02/11 MOD END
		outFile.createWriter();
		
		// 1行目を出力
		String title1 = SCOPE + JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE1) + SCOPE;
		// ダブルクォートを付与してファイル出力
		outFile.write(title1);

		// 2行目を出力
		// ファイル出力用のデータを設定
		StringBuffer writeDataL2 = new StringBuffer();
		writeDataL2.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE2));
		writeDataL2.append(CAM);
		writeDataL2.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_IRAIMOTO_NAME));
		// ダブルクォートを付与してファイル出力
		outFile.write(SCOPE + writeDataL2.toString().replace(CAM, SCOPE + CAM + SCOPE) + SCOPE);

		// KT1-2013-0000275 2013/03/05 START
		// 業パラで取得するヘッダー項目にnullが入っている可能性がある項目は、getChrRepNullToKuhakuを呼ぶ対応

		// 3行目を出力
		// ファイル出力用のデータを設定
		StringBuffer writeDataL3 = new StringBuffer();
		writeDataL3.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE3));
		writeDataL3.append(CAM);
		writeDataL3.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TANTO1));
		writeDataL3.append(CAM);
		writeDataL3.append(getChrRepNullToKuhaku(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TANTO2)));
		writeDataL3.append(CAM);
		writeDataL3.append(getChrRepNullToKuhaku(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TANTO3)));
		// ダブルクォートを付与してファイル出力
		outFile.write(SCOPE + writeDataL3.toString().replace(CAM, SCOPE + CAM + SCOPE) + SCOPE);

		// 4行目を出力
		// ファイル出力用のデータを設定
		StringBuffer writeDataL4 = new StringBuffer();
		writeDataL4.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE4));
		writeDataL4.append(CAM);
		writeDataL4.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TEL1));
		writeDataL4.append(CAM);
		writeDataL4.append(getChrRepNullToKuhaku(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TEL2)));
		writeDataL4.append(CAM);
		writeDataL4.append(getChrRepNullToKuhaku(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TEL3)));
		// ダブルクォートを付与してファイル出力
		outFile.write(SCOPE + writeDataL4.toString().replace(CAM, SCOPE + CAM + SCOPE) + SCOPE);

		// 5行目を出力
		// ファイル出力用のデータを設定
		StringBuffer writeDataL5 = new StringBuffer();
		writeDataL5.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE5));
		writeDataL5.append(CAM);
		writeDataL5.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_MAIL1));
		writeDataL5.append(CAM);
		writeDataL5.append(getChrRepNullToKuhaku(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_MAIL2)));
		writeDataL5.append(CAM);
		writeDataL5.append(getChrRepNullToKuhaku(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_MAIL3)));
		// KT1-2013-0000275 2013/03/05 END
		// ダブルクォートを付与してファイル出力
		outFile.write(SCOPE + writeDataL5.toString().replace(CAM, SCOPE + CAM + SCOPE) + SCOPE);

		// 6行目を出力
		// ファイル出力用のデータを設定
		StringBuffer writeDataL6 = new StringBuffer();
		writeDataL6.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE6));
		writeDataL6.append(CAM);
		// 運用日付の翌月を設定
		// 当月1日
		String opeMonFirst = opeDate.substring(0, 6) + "01";
		// 翌月1日
		String opeNextMonFirst = JPCDateUtil.addMonth(opeMonFirst, 1);
		// 西暦クラスのインスタンス生成
		JCCWestCalendar jWestCal = new JCCWestCalendar(opeNextMonFirst);

		// 和暦年月日の標準文字列を取得
		String jWestStdDate = jWestCal.toJapaneseCalendar();

		// 和暦クラスのインスタンス生成
		JCCJapaneseCalendar jJapaneseCal = new JCCJapaneseCalendar(jWestStdDate);

		// 漢字年号付和暦文字列取得
		String warekiDate = jJapaneseCal.toCcString("", JCRStrConst.DATE_JAPANESE_CHARACTER_YEAR,
				JCRStrConst.DATE_JAPANESE_CHARACTER_MONTH, JCRStrConst.DATE_JAPANESE_CHARACTER_DAY);
		//  漢字年号付和暦文字列の年月を追加
		writeDataL6.append(warekiDate.substring(0, warekiDate.length()-2));
		writeDataL6.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_APLY_YM));
		writeDataL6.append(CAM);
		writeDataL6.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE6_1));
		// ダブルクォートを付与してファイル出力
		outFile.write(SCOPE + writeDataL6.toString().replace(CAM, SCOPE + CAM + SCOPE) + SCOPE);

		// 7行目を出力
		// ファイル出力用のデータを設定
		StringBuffer writeDataL7 = new StringBuffer();
		writeDataL7.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE7));
		writeDataL7.append(CAM);
		writeDataL7.append("");
		// ダブルクォートを付与してファイル出力
		outFile.write(SCOPE + writeDataL7.toString().replace(CAM, SCOPE + CAM + SCOPE) + SCOPE);

		// 8行目を出力
		String title8 = JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE8);
		// ダブルクォートを付与してファイル出力
		outFile.write(SCOPE + title8 + SCOPE);

		// 9行目を出力
		// ファイル出力用のデータを設定
		StringBuffer writeDataL9 = new StringBuffer();
		writeDataL9.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE9));
		writeDataL9.append(CAM);
		writeDataL9.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE9_1));
		writeDataL9.append(CAM);
		writeDataL9.append(outList.size());
		writeDataL9.append(CAM);
		writeDataL9.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE9_2));
		// ダブルクォートを付与してファイル出力
		outFile.write(SCOPE + writeDataL9.toString().replace(CAM, SCOPE + CAM + SCOPE) + SCOPE);

		// 10行目を出力
		// ファイル出力用のデータを設定
		StringBuffer writeDataL10 = new StringBuffer();
		writeDataL10.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE10));
		writeDataL10.append(CAM);
		writeDataL10.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE10_1));
		writeDataL10.append(CAM);
		writeDataL10.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE10_2));
		writeDataL10.append(CAM);
		writeDataL10.append(JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_TITLE10_3));
		// ダブルクォートを付与してファイル出力
		outFile.write(SCOPE + writeDataL10.toString().replace(CAM, SCOPE + CAM + SCOPE) + SCOPE);

		for (JBSbatCommonDBInterface outLine : outList) {
			StringBuffer writeData = new StringBuffer();
			// IT1-2012-0000986 2012/09/05 start 
			writeData.append(JKKBatStringUtil.getLCutString(outLine.getString(JBSbatKK_T_SVC_KEI_EOMOBA.JIGYOSHA_KEI_ID),10));
			// IT1-2012-0000986 2012/09/05 end 
			writeData.append(CAM);
			writeData.append(outLine.getString(JBSbatTN_T_TAKNKIKI.MSISDN));
			writeData.append(CAM);
			String  new_pcrs_cd = outLine.getString(JBSbatKK_T_IDO_RSV.NEW_PCRS_CD);
			// 変更後料金コードが"A59"の場合はハイブリッドコース、以外はルーターコース
			if (PCRS_CD_A59.equals(new_pcrs_cd)) {
				writeData.append(PCRS_NM_HIBRID);
			} else {
				writeData.append(PCRS_NM_ROUTER);
			}
			// ダブルクォートを付与してファイル出力
			outFile.write(SCOPE + writeData.toString().replace(CAM, SCOPE + CAM + SCOPE) + SCOPE);
		}

		outFile.close();
		
		// 内部スキーマの更新処理をする。
		for (JBSbatCommonDBInterface outLine : outList) {

			// サービス契約スキーマの追加処理
			Object insertKK_T_SVC_KEIParam[] = {
					outLine.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO),
					opeDate
			};
			executeKK_T_SVC_KEI_KK_INSERT_002(insertKK_T_SVC_KEIParam);


			// サービス契約スキーマの追加処理
			Object insertKK_T_SVC_KEI_EOMOBAParam[] = {
					opeDate,
					outLine.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO)
			};
			executeKK_T_SVC_KEI_EOMOBA_KK_INSERT_001(insertKK_T_SVC_KEI_EOMOBAParam);
		}
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * SQLKEY(KK_T_SVC_KEI_EOMOBA.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_SVC_KEI_EOMOBA_KK_SELECT_002(Object[] param) throws Exception {
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		
		// DBアクセスを実行します
		db_KK_T_SVC_KEI_EOMOBA.selectBySqlDefine(paramList,KK_T_SVC_KEI_EOMOBA_KK_SELECT_002 );
	}

	/**
	 * SQLKEY(KK_T_SVC_KEI.KK_INSERT_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_SVC_KEI_KK_INSERT_002(Object[] param) throws Exception {
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.executeBySqlDefine(paramList,KK_T_SVC_KEI_KK_INSERT_002 );
	}

	/**
	 * SQLKEY(KK_T_SVC_KEI.KK_INSERT_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_SVC_KEI_EOMOBA_KK_INSERT_001(Object[] param) throws Exception {
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		
		// DBアクセスを実行します
		db_KK_T_SVC_KEI_EOMOBA.executeBySqlDefine(paramList,KK_T_SVC_KEI_EOMOBA_KK_INSERT_001 );
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		// DBアクセスクラスをクローズします
		db_KK_T_SVC_KEI_EOMOBA.close();
		db_KK_T_SVC_KEI.close();
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	
	// IT1-2012-0000986 2012/09/05 start 
	/**
	 * サービスインターフェース宅内機器一意照会（KKSV0691）の呼出を行い結果を取得します。
	 * 
	 * @param taknkiki_model_cd 宅内機器型式コード
	 * @param kiki_seizo_no 機器製造番号
	 * @return String サービス呼出結果により取得したSTBID
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	@SuppressWarnings("unchecked")
	private void callKKSV0691(List<JBSbatCommonDBInterface> outList) throws Exception
	{
		super.logPrint.printDebugLog("getStbIdFromKKSV0691_START");
		
		
		// ◇inputMapに設定する宅内機器一意照会データをHashMapで作成する。
		
		ArrayList<HashMap<String, String>> inList = new ArrayList<HashMap<String, String>>();
		for (JBSbatCommonDBInterface outLine : outList) {
			HashMap<String, String> dataMap = new HashMap<String, String>();
			dataMap.put("key_tk_mdl_cd", outLine.getString(JBSbatTN_T_TAKNKIKI.TAKNKIKI_MODEL_CD));
			dataMap.put("key_kk_seizo_no", outLine.getString(JBSbatTN_T_TAKNKIKI.KIKI_SEIZO_NO));
			inList.add(dataMap);
		}
		
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		inMap.put("EKKA0020003CBSMsg1List", inList);
		inMap.put("func_code", "1");
		
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		inputMap.put("KKSV069101SC", inMap);
		
		// ユースケースIDを格納するMAP
		HashMap<String, Object>  paramMap0691 = new HashMap<String, Object>();
		paramMap0691.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, "KKSV0691");
		paramMap0691.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, "KKSV0691OP");
		
		// サービスの処理結果が格納されるMAP
		HashMap<String, Object>  outputMap = new HashMap<String, Object> ();
		
		// サービス呼び出し
		JCCBatchEsbInterface.invokeService(super.commonItem, paramMap0691, inputMap, outputMap);
		
		// エラー判定
		String returnCode = outputMap.get("RETURN_CODE").toString();
		if(!SIF_SEIJO.equals(returnCode))
		{
			String msg = JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.EKKB0270CE, new String[]{"KKSV0691"});
			JBSbatBusinessError ex = new JBSbatBusinessError(msg);
			super.logPrint.printErrMsg(JPCBatchMessageConstant.EKKB0270CE, ex, new String[]{"KKSV0691"});
			throw ex;
		}
		
		// サービスの処理結果より取得
		HashMap<String, Object>  resultMap = (HashMap<String, Object>)outputMap.get("KKSV069101SC");
		ArrayList<HashMap<String, String>> resultList = (ArrayList<HashMap<String, String>>)resultMap.get("EKKA0020003CBSMsg2List");
		
		
		// サービスインターフェースより返却値が設定されている場合
		if(null != resultList && 0 != resultList.size())
		{
			for (JBSbatCommonDBInterface outLine : outList) {
				String inTaknkikiModelCd = outLine.getString(JBSbatTN_T_TAKNKIKI.TAKNKIKI_MODEL_CD);
				String inKikiSeizoNo = outLine.getString(JBSbatTN_T_TAKNKIKI.KIKI_SEIZO_NO);
				String msisdn = null;
				for(int i=0;i<resultList.size();i++){
					HashMap<String, String> childMap = (HashMap<String, String>)resultList.get(i);
					String outTaknkikiModelCd = (String)childMap.get("tk_mdl_cd");
					String outKikiSeizoNo = (String)childMap.get("kk_seizo_no");
					if(inTaknkikiModelCd.equals(outTaknkikiModelCd) && inKikiSeizoNo.equals(outKikiSeizoNo)){
						msisdn = (String)childMap.get("msisdn");
						break;
					}
				}
				outLine.setValue(JBSbatTN_T_TAKNKIKI.MSISDN, msisdn);
			}
		}
		
		super.logPrint.printDebugLog("getStbIdFromKKSV0691_END");
	}
	// IT1-2012-0000986 2012/09/05 end 

	// ANK-1273-00-00 eoモバイル3G　eo64移行プランの乗換対応 2013/01/04 START
	/**
	 * 業務パラメータ管理からeo64移行乗換プランの業務パラメータ設定値を取得し、
	 * 区切り文字で区切った結果をリストに格納して返します。<br>
	 * 
	 * @return eo64移行乗換プランの変更前・変更後料金プランコードのリスト
	 * @throws Exception 業務パラメータ取得処理に失敗した場合
	 */
	private List<String> getEo64PplanList() throws Exception
	{
		// 業務パラメータ取得
		String pplanEo64SetteValue = JKKBatCommon.getWorkParamSetteValue(super.commonItem, ID_PPLAN_EO64);
		List<String> eo64PplanList = new ArrayList<String>();
		if (null != pplanEo64SetteValue && !"".equals(pplanEo64SetteValue))
		{
			eo64PplanList = Arrays.asList(pplanEo64SetteValue.split(PPLAN_EO64_LIST_SEP));
		}
		else
		{
			super.logPrint.printDebugLog("業務パラメータ管理にeo64移行乗換プラン(業務パラメータID："
				+ ID_PPLAN_EO64 + ")が設定されていません。");
		}

		return eo64PplanList;
	}
	// ANK-1273-00-00 eoモバイル3G　eo64移行プランの乗換対応 2013/01/04 END

	// KT1-2013-0000275 2013/03/05 START
	/**
	 * 対象文字列がnullの場合は、空文字を返します。
	 * null以外の場合は対象文字列をそのまま返します。<br>
	 * 
	 * @param  trgtChr 対象文字列
	 * @return value 変換後の文字列
	 */
	private String getChrRepNullToKuhaku(String trgtChr) 
	{

		if(trgtChr == null){
			
			return "";
		}
		
		return trgtChr;
	}
	// KT1-2013-0000275 2013/03/05 END
	
}
