/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKNhkOksNoUpd
*	ソースファイル名	：JBSbatKKNhkOksNoUpd.java
*	作成者				：富士通　
*	作成日				：2014年03月14日
*＜機能概要＞
*　ＮＨＫお客様番号更新部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v8.00.00	2014/03/14   FJ)篠原		新規作成
*	v9.00.00	2014/08/21   FJ)中野		OM-2014-0002702 NHKお客様番号が前２桁0埋めされていない
**	v11.00.00	2014/10/21   FJ)齋藤		ANK-2248-00-00  NHK団体一括対象範囲拡大について
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JFUBatCommon;
import eo.business.util.table.JBSbatAC_T_NHK_WTCHCRG_DTL;
import eo.business.util.table.JBSbatKK_T_OPSVKEI_TV;
import eo.business.util.table.JBSbatKK_T_SEIOPSVC_KEI;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKNhkOksNoUpd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
//ANK-2248-00-00 MOD START	
//	/** テーブル(オプションサービス契約＜ＴＶ＞)*/
//	private static final String D_TBL_NAME_KK_T_OPSVKEI_TV = "KK_T_OPSVKEI_TV";
//
//	/** テーブル(オプションサービス契約)*/
//	private static final String D_TBL_NAME_KK_T_OP_SVC_KEI = "KK_T_OP_SVC_KEI";

//	/** SQL定義キー(KK_INSERT_003)*/
//	private static final String KK_T_OPSVKEI_TV_KK_INSERT_003 = "KK_INSERT_003";
//
//	/** SQL定義キー(KK_INSERT_004)*/
//	private static final String KK_T_OP_SVC_KEI_KK_INSERT_004 = "KK_INSERT_004";
//
//	/** テーブルアクセスクラス(オプションサービス契約＜ＴＶ＞)*/
//	private JBSbatSQLAccess db_KK_T_OPSVKEI_TV = null;
//
//	/** テーブルアクセスクラス(オプションサービス契約)*/
//	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/	
	/** テーブル(請求オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_SEIOPSVC_KEI = "KK_T_SEIOPSVC_KEI";
	
	/** SQL定義キー(KK_INSERT_002)*/
	private static final String KK_T_SEIOPSVC_KEI_INSERT_002 = "KK_INSERT_002";
	
	/** テーブルアクセスクラス(請求オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_SEIOPSVC_KEI = null;
	
//ANK-2248-00-00 MOD END

	private int count = 0;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
//ANK-2248-00-00 MOD START
//		db_KK_T_OPSVKEI_TV = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OPSVKEI_TV);
//		db_KK_T_OP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		db_KK_T_SEIOPSVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIOPSVC_KEI);
//ANK-2248-00-00 MOD END

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// Excetion発生時のログ出力のメッセージを設定する
		String msgid = "EWCB0170CE";					// %1%データベースの読み込みに失敗しました。
		String msg = "ＮＨＫ視聴課金明細";				// selectを実施するテーブル名
		try {
			// 現在のシステム日付を取得する。
			String sysDateTimeStamp = JFUBatCommon.getSysDateTimeStamp();
			msgid = "EWCB0190CE";						// %1%データベースの書き込みに失敗しました。
			// pram2の1つ目にsysDateTimeStampを設定し、2つ目以降はＮＨＫ視聴課金明細のselect結果の
			// NHKお客様番号、オプションサービス契約番号、世代登録年月日時分秒を設定する
			// pram3の1つ目にsysDateTimeStampを設定し、2つ目以降はＮＨＫ視聴課金明細のselect結果の
			// オプションサービス契約番号、世代登録年月日時分秒を設定する
			
			// ▼▼▼▼▼ OM-2014-0002702 2014/08/21 MOD START ▼▼▼▼▼
			String nhkCustNo = inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.NHK_CUST_NO);
			
			// NHKお客様番号に前2桁0を埋めを行う。
			if(nhkCustNo.trim().length()!=12)
			{
				// NHKお客様番号が12桁ではない場合、項目自体がNULLかどうかを判定
				if(nhkCustNo.equals("") || nhkCustNo == null)
				{
					// NHKお客様番号が空白もしくはNULLなら何もしない
				}
				else
				{
					// NHKお客様番号が空白でない場合、12桁になるように０埋めを行う。
					// １０桁で連携されてくる事が大前提となる。
					nhkCustNo="00" + nhkCustNo.trim();
				}
			}
			else
			{
				// NHKお客様番号が12桁の場合は何もしない
			}
			
//			String[] pram2 = {sysDateTimeStamp,inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.NHK_CUST_NO),
//					inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.OP_SVC_KEI_NO),
//					inMap.getString(JBSbatKK_T_OPSVKEI_TV.GENE_ADD_DTM)};
//ANK-2248-00-00 MOD START
//			String[] pram2 = {sysDateTimeStamp,nhkCustNo,
//			inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.OP_SVC_KEI_NO),
//			inMap.getString(JBSbatKK_T_OPSVKEI_TV.GENE_ADD_DTM)};
//			
//			// ▲▲▲▲▲ OM-2014-0002702 2014/08/21 MOD END ▲▲▲▲▲
//			
//			String[] pram3 = {sysDateTimeStamp,
//					inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.OP_SVC_KEI_NO),
//					inMap.getString(JBSbatKK_T_OPSVKEI_TV.GENE_ADD_DTM)};
//			// オプションサービス契約＜ＴＶ＞へデータの追加を行う。
//			msg = "オプションサービス契約＜ＴＶ＞";					// insertを実施するテーブル名
//			executeKK_T_OPSVKEI_TV_KK_INSERT_003(pram2);
//			// オプションサービス契約へデータの追加を行う。
//			msg = "オプションサービス契約";							// insertを実施するテーブル名
//			executeKK_T_OP_SVC_KEI_KK_INSERT_004(pram3);
			super.logPrint.printDebugLog("請求オプションサービス契約番号:" + inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.OP_SVC_KEI_NO));
			super.logPrint.printDebugLog("NHKお客様番号                 :" + nhkCustNo);
			String[] pram4 = {sysDateTimeStamp,	
							nhkCustNo,
							inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.OP_SVC_KEI_NO),
							inMap.getString(JBSbatKK_T_SEIOPSVC_KEI.GENE_ADD_DTM)};
			msg = "請求オプションサービス契約";							// insertを実施するテーブル名
			executeKK_T_SEIOPSVC_KEI_KK_INSERT_002(pram4);
//ANK-2248-00-00 MOD END
			count++;
			
		// DBアクセスエラーの場合メジャーアラームを発生させる。
		} catch (Exception e) {
			// (%1%)
			throw new JBSbatBusinessException(msgid, new String[]{msg});
			
		}
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// insert件数が1件以上の場合以下の内容をログに出力する
		if (count > 0)
		{
//ANK-2248-00-00 MOD START
//			this.logPrint.printLogMsg("CS00031I", "オプションサービス契約＜TV＞へのinsertが完了しました。");
//			this.logPrint.printLogMsg("CS00031I", "オプションサービス契約へのinsertが完了しました。");
			this.logPrint.printLogMsg("CS00031I", "請求オプションサービス契約へのinsertが完了しました。");
//ANK-2248-00-00 MOD END
		}
		// DBアクセスクラスをクローズします
//ANK-2248-00-00 MOD START		
//		db_KK_T_OPSVKEI_TV.close();
//		db_KK_T_OP_SVC_KEI.close();
		db_KK_T_SEIOPSVC_KEI.close();
//ANK-2248-00-00 MOD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
//ANK-2248-00-00 DEL START
//	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
//	/**
//	 * SQLKEY(KK_INSERT_003)でDBアクセスを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数でバイント変数を設定します。<br>
//	 *
//	 * 2.DBアクセスを実行します。<br>
//	 * 
//	 * 3.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
//	 *		 	世代登録年月日時分秒
//	 *		 	NHKお客様番号
//	 *		 	オプションサービス契約番号
//	 *		 	世代登録年月日時分秒
//	 * </pre>
//	 * <p>
//	 * @param param バイント変数の値配列。
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private void executeKK_T_OPSVKEI_TV_KK_INSERT_003(Object[] param) throws Exception
//	{
//		// バイント変数のリストを生成します
//		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//		paramList.setValue(param[0].toString());
//		paramList.setValue(param[1].toString());
//		paramList.setValue(param[2].toString());
//		paramList.setValue(param[3].toString());
//
//		// DBアクセスを実行します
//		db_KK_T_OPSVKEI_TV.executeBySqlDefine(paramList, KK_T_OPSVKEI_TV_KK_INSERT_003);
//	}
//
//	/**
//	 * SQLKEY(KK_INSERT_004)で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_OP_SVC_KEI_KK_INSERT_004(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_OP_SVC_KEI.executeBySqlDefine(paramList, KK_T_OP_SVC_KEI_KK_INSERT_004);
//	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
//ANK-2248-00-00 DEL END
//ANK-2248-00-00 ADD START
	/**
	 * SQLKEY(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_SEIOPSVC_KEI_KK_INSERT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[0].toString());
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_KK_T_SEIOPSVC_KEI.executeBySqlDefine(paramList, KK_T_SEIOPSVC_KEI_INSERT_002);
	}
//ANK-2248-00-00 ADD END
}

