/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCNContUseAutoStaAdd
*	ソースファイル名	：JBSbatCNContUseAutoStaAdd.java
*	作成者				：富士通　
*	作成日				：2024年12月11日
*＜機能概要＞
*　コンテンツ利用自動開始登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v73.00.00	2024/12/11	FJ)謝		【ANK-4570-00-00】コンテンツ新規同時申込み時契約仕様見直し対応
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatCNIFM024;
import eo.business.util.table.JBSbatCN_T_PAYWAY_INSUPORT;
import eo.business.util.table.JBSbatKK_M_OPBMPB_CONT_CMP;
import eo.business.util.table.JBSbatKK_M_OPBMPB_CONT_SVC;
import eo.common.constant.JCNStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JCNStringUtil;
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.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JCCBatchEsbInterface;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCNContUseAutoStaAdd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(開通前申込可能コンテンツサービス)*/
	private static final String D_TBL_NAME_KK_M_OPBMPB_CONT_SVC = "KK_M_OPBMPB_CONT_SVC";

	/** テーブル(開通前申込可能コンテンツキャンペーン)*/
	private static final String D_TBL_NAME_KK_M_OPBMPB_CONT_CMP = "KK_M_OPBMPB_CONT_CMP";

	/** テーブル(支払い方法入力支援)*/
	private static final String D_TBL_NAME_CN_T_PAYWAY_INSUPORT = "CN_T_PAYWAY_INSUPORT";

	/** テーブル(コンテンツ申込情報)*/
	private static final String D_TBL_NAME_KK_T_CONT_MKM_INF = "KK_T_CONT_MKM_INF";

	/** SQL定義キー(CN_SELECT_001)*/
	private static final String KK_M_OPBMPB_CONT_SVC_CN_SELECT_001 = "CN_SELECT_001";

	/** SQL定義キー(CN_SELECT_002)*/
	private static final String KK_M_OPBMPB_CONT_CMP_CN_SELECT_002 = "CN_SELECT_002";

	/** SQL定義キー(CN_SELECT_002)*/
	private static final String CN_T_PAYWAY_INSUPORT_CN_SELECT_002 = "CN_SELECT_002";

	/** SQL定義キー(CN_UPDATE_001)*/
	private static final String KK_T_CONT_MKM_INF_CN_UPDATE_001 = "CN_UPDATE_001";

	/** テーブルアクセスクラス(開通前申込可能コンテンツサービス)*/
	private JBSbatSQLAccess db_KK_M_OPBMPB_CONT_SVC = null;

	/** テーブルアクセスクラス(開通前申込可能コンテンツキャンペーン)*/
	private JBSbatSQLAccess db_KK_M_OPBMPB_CONT_CMP = null;

	/** テーブルアクセスクラス(支払い方法入力支援)*/
	private JBSbatSQLAccess db_CN_T_PAYWAY_INSUPORT = null;

	/** テーブルアクセスクラス(コンテンツ申込情報)*/
	private JBSbatSQLAccess db_KK_T_CONT_MKM_INF = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** エラー機能識別コード 1（処理番号発行） */
	private static final String ERR_SKBT_CD_1 = "1";
	
	/** エラー機能識別コード 2（コンテンツ即時契約） */
	private static final String ERR_SKBT_CD_2 = "2";
	
	/** エラー機能識別コード 3（契約可能コンテンツ取得） */
	private static final String ERR_SKBT_CD_3 = "3";
	
	/** コンテンツサービスコード、コンテンツコード格納マップ */
	private HashMap<String, String> contCdMap  = null;
	
	/** コンテンツサービスコード、コンテンツキャンペーンコード格納マップ */
	private HashMap<String, String> contCmpCdMap  = null;
	
	/** 初回エラーログ出力フラグ true:初回、false:２回目以降*/
	private boolean firstErrLogOutputFlg = true;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_M_OPBMPB_CONT_SVC = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_OPBMPB_CONT_SVC);
		db_KK_M_OPBMPB_CONT_CMP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_OPBMPB_CONT_CMP);
		db_CN_T_PAYWAY_INSUPORT = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_T_PAYWAY_INSUPORT);
		db_KK_T_CONT_MKM_INF = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CONT_MKM_INF);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// 初期化
		contCdMap = new HashMap<String, String>();
		contCmpCdMap = new HashMap<String, String>();
		
		// 開通前申込可能コンテンツサービスからコンテンツコードを取得する
		Object[] opbmpbContSvcParam = { super.opeDate, super.opeDate };
		executeKK_M_OPBMPB_CONT_SVC_CN_SELECT_001(opbmpbContSvcParam);
		JBSbatCommonDBInterface opbmpbContSvcMap = db_KK_M_OPBMPB_CONT_SVC.selectNext();
		
		while (opbmpbContSvcMap != null)
		{
			// コンテンツサービスコード
			String contSvcCd = opbmpbContSvcMap.getString(JBSbatKK_M_OPBMPB_CONT_SVC.CONT_SVC_CD);
			
			// コンテンツコード
			String contCd = opbmpbContSvcMap.getString(JBSbatKK_M_OPBMPB_CONT_SVC.CONT_CD);
			
			contCdMap.put(contSvcCd, contCd);
			
			opbmpbContSvcMap = db_KK_M_OPBMPB_CONT_SVC.selectNext();
		}
		
		// 開通前申込可能コンテンツキャンペーンからコンテンツキャンペーンコードを取得する
		Object[] opbmpbContCmpParam = { super.opeDate, super.opeDate, super.opeDate };
		executeKK_M_OPBMPB_CONT_CMP_CN_SELECT_002(opbmpbContCmpParam);
		JBSbatCommonDBInterface opbmpbContCmpMap = db_KK_M_OPBMPB_CONT_CMP.selectNext();
		
		while (opbmpbContCmpMap != null)
		{
			// コンテンツサービスコード
			String contSvcCd = opbmpbContCmpMap.getString(JBSbatKK_M_OPBMPB_CONT_CMP.CONT_SVC_CD);
			
			// コンテンツキャンペーンコード
			String contCmpCd = opbmpbContCmpMap.getString(JBSbatKK_M_OPBMPB_CONT_CMP.CONT_CMP_CD);
			
			if (contCmpCdMap.containsKey(contSvcCd))
			{
				// コンテンツサービスコード毎に複数レコードが存在する場合はメジャーエラー
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECNB0570KE, new String[] { contSvcCd });
			}
			else
			{
				contCmpCdMap.put(contSvcCd, contCmpCd);
			}
			
			opbmpbContCmpMap = db_KK_M_OPBMPB_CONT_CMP.selectNext();
		}
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		try
		{
			// ISP決済サービス契約番号
			String ispKssaiSvcKeiNo = "";
			
			// コンテンツサービスコードに紐づくコンテンツコードが存在しない場合
			if (!contCdMap.containsKey(inMap.getString(JBSbatCNIFM024.CONT_SVC_CD)))
			{
				return null;
			}
			
			// 支払方法入力支援の存在チェックを行う
			Object[] paywayInsuportParam = { inMap.getString(JBSbatCNIFM024.SYSID) };
			executeCN_T_PAYWAY_INSUPORT_CN_SELECT_002(paywayInsuportParam);
			JBSbatCommonDBInterface paywayInsuportMap = db_CN_T_PAYWAY_INSUPORT.selectNext();
			
			if (paywayInsuportMap != null)
			{
				ispKssaiSvcKeiNo = paywayInsuportMap.getString(JBSbatCN_T_PAYWAY_INSUPORT.ISP_KSSAI_SVC_KEI_NO);
			}
			else
			{
				ispKssaiSvcKeiNo = inMap.getString(JBSbatCNIFM024.SVC_KEI_NO);
				
				// ■■■ISP決済情報登録サービスを呼び出す■■■
				HashMap<String, Object> outputMap1 = null;
				try
				{
					outputMap1 = invokeServiceCnsv0068(inMap);
				}
				catch (Throwable e)
				{
					// 何もしない
				}
				
				// リターンコード 
				String returnCode1 = JCCBatchEsbInterface.getReturnCode(outputMap1);
				
				// 異常の場合
				if(!JCCBatchEsbInterface.RETURN_CODE_SUCCESS.equals(returnCode1))
				{
					// エラーログを出力
					String errNaiyo = "指示書連携エラー";
					errLogOutput(inMap.getString(JBSbatCNIFM024.SYSID), inMap.getString(JBSbatCNIFM024.CONT_MSKM_NO), errNaiyo);
					return null;
				}
			}
			
			// ■■■ISP決済方法変更サービスを呼び出す■■■
			HashMap<String, Object> outputMap2 = null;
			try
			{
				outputMap2 = invokeServiceCnsv0067(inMap, ispKssaiSvcKeiNo);
			}
			catch (Throwable e)
			{
				// 何もしない
			}
			
			// リターンコード 
			String returnCode2 = JCCBatchEsbInterface.getReturnCode(outputMap2);
			
			// 異常の場合
			if(!JCCBatchEsbInterface.RETURN_CODE_SUCCESS.equals(returnCode2))
			{
				// エラーログを出力
				String errNaiyo = "ISP決済方法登録失敗エラー";
				if (outputMap2 != null)
				{
					// サービスの処理結果
					HashMap<String, Object> cnsv006701ccMap = (HashMap<String, Object>)outputMap2.get("CNSV006701CC");
					if (cnsv006701ccMap != null)
					{
						errNaiyo = errNaiyo + "　" + "CNIFE054 err_cd:" + getNullToStr((String)cnsv006701ccMap.get("err_cd"));
					}
				}
				errLogOutput(inMap.getString(JBSbatCNIFM024.SYSID), inMap.getString(JBSbatCNIFM024.CONT_MSKM_NO), errNaiyo);
				return null;
			}
			
			
			// ■■■コンテンツ利用自動開始登録サービスを呼び出す■■■
			HashMap<String, Object> outputMap3 = null;
			try
			{
				outputMap3 = invokeServiceCnsv0066(inMap);
			}
			catch (Throwable e)
			{
				// 何もしない
			}
			
			// リターンコード 
			String returnCode3 = JCCBatchEsbInterface.getReturnCode(outputMap3);
			
			// 異常の場合
			if(!JCCBatchEsbInterface.RETURN_CODE_SUCCESS.equals(returnCode3))
			{
				// エラーログを出力
				String errNaiyo = "コンテンツ契約開始未完了エラー";
				String outErrSkbtCd = "";
				String outErrCd = "";
				if (outputMap3 != null)
				{
					// サービスの処理結果
					HashMap<String, Object> cnsv006601ccMap = (HashMap<String, Object>)outputMap3.get("CNSV006601CC");
					if (cnsv006601ccMap != null)
					{
						outErrSkbtCd = getNullToStr((String)cnsv006601ccMap.get("out_err_skbt_cd"));
						outErrCd = getNullToStr((String)cnsv006601ccMap.get("out_err_cd"));
					}
				}
				
				// 契約可能コンテンツ取得エラーの場合
				if (ERR_SKBT_CD_3.equals(outErrSkbtCd))
				{
					errNaiyo= errNaiyo + "　" + "CNIFE057 err_cd:" + outErrCd;
				}
				// 処理番号発行エラーの場合
				else if (ERR_SKBT_CD_1.equals(outErrSkbtCd))
				{
					errNaiyo= errNaiyo + "　" + "CNIFE059 err_cd:" + outErrCd;
				}
				// コンテンツ即時契約エラーの場合
				else if (ERR_SKBT_CD_2.equals(outErrSkbtCd))
				{
					errNaiyo= errNaiyo + "　" + "CNIFE058 err_cd:" + outErrCd;
				}
				
				errLogOutput(inMap.getString(JBSbatCNIFM024.SYSID), inMap.getString(JBSbatCNIFM024.CONT_MSKM_NO), errNaiyo);
				return null;
			}
			
			// コンテンツ申込情報のステータス（利用開始）を更新する
			Object[] setParam = { inMap.getString(JBSbatCNIFM024.CONT_MSKM_NO) };
			executeKK_T_CONT_MKM_INF_CN_UPDATE_001(setParam);
			
			// コミット
			commonItem.getConnection().commit();
		}
		catch (Exception ex)
		{
			// コネクションのロールバック
			commonItem.getConnection().rollback();
			// エラーログ出力
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, new String[]{ex.getMessage()});
			commonItem.addErrorCount(1);
		}
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_M_OPBMPB_CONT_SVC.close();
		db_KK_M_OPBMPB_CONT_CMP.close();
		db_CN_T_PAYWAY_INSUPORT.close();
		db_KK_T_CONT_MKM_INF.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(CN_SELECT_001)で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_M_OPBMPB_CONT_SVC_CN_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_M_OPBMPB_CONT_SVC.selectBySqlDefine(paramList, KK_M_OPBMPB_CONT_SVC_CN_SELECT_001);
	}

	/**
	 * SQLKEY(CN_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_M_OPBMPB_CONT_CMP_CN_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_M_OPBMPB_CONT_CMP.selectBySqlDefine(paramList, KK_M_OPBMPB_CONT_CMP_CN_SELECT_002);
	}

	/**
	 * SQLKEY(CN_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SYSID
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCN_T_PAYWAY_INSUPORT_CN_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CN_T_PAYWAY_INSUPORT.selectBySqlDefine(paramList, CN_T_PAYWAY_INSUPORT_CN_SELECT_002);
	}

	/**
	 * SQLKEY(CN_UPDATE_001)で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_CONT_MKM_INF_CN_UPDATE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_CONT_MKM_INF.executeBySqlDefine(paramList, KK_T_CONT_MKM_INF_CN_UPDATE_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * エラーログ出力処理を行う
	 * @param sysid SYSID
	 * @param contMskmNo コンテンツ申込番号
	 * @param errNaiyo エラー内容
	 * @throws Exception
	 */
	private void errLogOutput(String sysid, String contMskmNo, String errNaiyo) throws Exception
	{
		// 初回エラーログ出力の場合
		if (firstErrLogOutputFlg)
		{
			// エラーログを出力する
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECNB0550KW, new String[] {});
			commonItem.addErrorCount(1);
			
			firstErrLogOutputFlg = false;
		}
		
		// インフォメーションログを出力する
		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECNB0560AI, new String[] {sysid, contMskmNo, errNaiyo});
	}
	
	/**
	 * ISP決済情報登録サービス呼出処理
	 * @param inMap 入力電文
	 * @return サービスの処理結果
	 * @throws Exception
	 */
	private HashMap<String, Object> invokeServiceCnsv0068(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// サービス呼び出し時の引数を生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, "CNSV0068");
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, "CNSV0068OP");
		
		// サービスに渡す業務データを格納するMAP
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 機能コード
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);
		// SYSID
		parentMap.put("sysid", inMap.getString(JBSbatCNIFM024.SYSID));
		// サービス契約番号
		parentMap.put("svc_kei_no", inMap.getString(JBSbatCNIFM024.SVC_KEI_NO));
		// 督促ステータス
		parentMap.put("tokusoku_stat", inMap.getString(JBSbatCNIFM024.TOKUSOKU_STAT));
		
		inputMap.put("CNSV006801CC", parentMap);
		
		// サービスの処理結果が格納されるMAP
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// サービス呼び出し
		JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
		
		return outputMap;
	}
	
	/**
	 * ISP決済方法変更サービス呼出処理
	 * @param inMap 入力電文
	 * @param svcKeiNo サービス契約番号
	 * @return サービスの処理結果
	 * @throws Exception
	 */
	private HashMap<String, Object> invokeServiceCnsv0067(JBSbatServiceInterfaceMap inMap, String svcKeiNo) throws Exception
	{
		// サービス呼び出し時の引数を生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, "CNSV0067");
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, "CNSV0067OP");
		
		// サービスに渡す業務データを格納するMAP
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 機能コード
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);
		// SYSID
		parentMap.put("sysid", inMap.getString(JBSbatCNIFM024.SYSID));
		// 決済方法ID
		parentMap.put("settlement_way_id", svcKeiNo);
		// 更新者ID
		parentMap.put("update_id", inMap.getString(JBSbatCNIFM024.SYSID));
		// 更新者名
		parentMap.put("update_name", "お客様");
		
		inputMap.put("CNSV006701CC", parentMap);
		
		// サービスの処理結果が格納されるMAP
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// サービス呼び出し
		JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
		
		return outputMap;
	}
	
	/**
	 * コンテンツ利用自動開始登録サービス呼出処理
	 * @param inMap 入力電文
	 * @return サービスの処理結果
	 * @throws Exception
	 */
	private HashMap<String, Object> invokeServiceCnsv0066(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// サービス呼び出し時の引数を生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, "CNSV0066");
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, "CNSV0066OP");
		
		// サービスに渡す業務データを格納するMAP
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 機能コード
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);
		// コンテンツサービスコード
		parentMap.put("cont_svc_cd", inMap.getString(JBSbatCNIFM024.CONT_SVC_CD));
		// SYSID
		parentMap.put("sysid", inMap.getString(JBSbatCNIFM024.SYSID));
		// コンテンツコード
		parentMap.put("cont_cd", contCdMap.get(inMap.getString(JBSbatCNIFM024.CONT_SVC_CD)));
		// 決済方法番号
		parentMap.put("settlement_way_no", JCNStrConst.PAYWAY_INPUT_SHIEN_CD_ISP);
		// 支払方法ID
		parentMap.put("payway_id", "");
		// コンテンツキャンペーンコード
		parentMap.put("cont_cmp_cd", contCmpCdMap.get(inMap.getString(JBSbatCNIFM024.CONT_SVC_CD)));
		// 申込日時
		String applicationDate = "";
		if (!JCNStringUtil.isNullBlank(inMap.getString(JBSbatCNIFM024.SVC_STA_YMD)))
		{
			applicationDate = inMap.getString(JBSbatCNIFM024.SVC_STA_YMD) + "000000";
		}
		parentMap.put("application_date", applicationDate);
		
		inputMap.put("CNSV006601CC", parentMap);
		
		// サービスの処理結果が格納されるMAP
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// サービス呼び出し
		JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
		
		return outputMap;
	}
	
	/**
	 * パラメタがNullの場合空白を返却します。
	 * @param str 文字列
	 * @return str
	 */
	private String getNullToStr(String str)
	{
		if (str == null || "".equals(str.trim()))
		{
			return "";
		}
		return str;
	}
}
