/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCN050TelnoListSend
*	ソースファイル名	：JBSbatCN050TelnoListSend.java
*	作成者				：富士通　
*	作成日				：2013年02月18日
*＜機能概要＞
*　050番号リスト連携部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2013/02/18   富士通		新規作成
*	v5.00.00	2013/09/30   味岡		OM-2013-0002726 未移行会員の場合はコンテンツ会員名を取得するよう変更
*	v29.00.00	2017/02/13	 FJ)和田	【ANK-2886-00-00】	CTI連携の連携条件見直し
*	v65.00.00	2023/07/12	FJ)中原		【ANK-4346-00-00】【eo定期】CCMG再構築対応
*********************************************************************/
package eo.business.service;

import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCNBatCommon;
import eo.business.util.file.JBSbatKKIFM326;
import eo.business.util.table.JBSbatCN_T_CONT_KEI_UCWK;
import eo.business.util.table.JBSbatKK_M_OLD_ICS_CD_CHG;
import eo.common.constant.JCNStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCNStringUtil;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.util.JCCBatchEsbInterface;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCN050TelnoListSend extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(処理日付情報)*/
	private static final String D_TBL_NAME_CN_T_TRAN_YMD_INFO = "CN_T_TRAN_YMD_INFO";

	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";
	
		// ANK-4346-00-00 MOD START
	///** テーブル(コンテンツ契約)*/
	//private static final String D_TBL_NAME_CN_T_CONT_KEI = "CN_T_CONT_KEI";
	/** テーブル(コンテンツ契約内訳)*/
	private static final String D_TBL_NAME_CN_T_CONT_KEI_UCWK = "CN_T_CONT_KEI_UCWK";
	// ANK-4346-00-00 MOD END

	// 2017/02/13 ANK-2886-00-00 ADD START
	/** テーブル(旧ＩＣＳコード変換)*/
	private static final String D_TBL_NAME_KK_M_OLD_ICS_CD_CHG = "KK_M_OLD_ICS_CD_CHG";
	// 2017/02/13 ANK-2886-00-00 ADD END

	/** SQL定義キー(CN_SELECT_002)*/
	private static final String CN_T_TRAN_YMD_INFO_CN_SELECT_002 = "CN_SELECT_002";

	/** SQL定義キー(CN_SELECT_001)*/
	private static final String ZM_M_WORK_PARAM_KNRI_CN_SELECT_001 = "CN_SELECT_001";

	// ANK-4346-00-00 MOD START
	///** SQL定義キー(CN_SELECT_013)*/
	//private static final String CN_T_CONT_KEI_CN_SELECT_013 = "CN_SELECT_013";
	/** SQL定義キー(CN_SELECT_005)*/
	private static final String CN_T_CONT_KEI_UCWK_CN_SELECT_005 = "CN_SELECT_005";
	// ANK-4346-00-00 MOD END

	/** SQL定義キー(CN_UPDATE_001)*/
	private static final String CN_T_TRAN_YMD_INFO_CN_UPDATE_001 = "CN_UPDATE_001";

	// 2017/02/13 ANK-2886-00-00 ADD START
	/** SQL定義キー(KK_SELECT_002)*/
	private static final String KK_M_OLD_ICS_CD_CHG_KK_SELECT_002 = "KK_SELECT_002";
	// 2017/02/13 ANK-2886-00-00 ADD END

	/** テーブルアクセスクラス(処理日付情報)*/
	private JBSbatSQLAccess db_CN_T_TRAN_YMD_INFO = null;

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;

	// ANK-4346-00-00 MOD START
	///** テーブルアクセスクラス(コンテンツ契約)*/
	//private JBSbatSQLAccess db_CN_T_CONT_KEI = null;
	/** テーブルアクセスクラス(コンテンツ契約内訳)*/
	private JBSbatSQLAccess db_CN_T_CONT_KEI_UCWK = null;
	// ANK-4346-00-00 MOD END
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	// 2017/02/13 ANK-2886-00-00 ADD START
	/** テーブルアクセスクラス(旧ＩＣＳコード変換)*/
	private JBSbatSQLAccess db_KK_M_OLD_ICS_CD_CHG = null;

	/** サービス状態ステータス：解約済 */
	private static final String SVC_KEI_STAT_910  = JBSbatKKConst.SVC_KEI_STAT_DLS_ZM;
	// 2017/02/13 ANK-2886-00-00 ADD END

	/** メッセージキー ECNB0080KE*/
	private static final String ECNB0080KE = JPCBatchMessageConstant.ECNB0080KE;
	/** メッセージキー ECNB0090AI*/
	private static final String ECNB0090AI = JPCBatchMessageConstant.ECNB0090AI;
	/** メッセージキー ECNB0230KE*/
	private static final String ECNB0230KE = JPCBatchMessageConstant.ECNB0230KE;
	/** メッセージキー ECNB0320KE*/
	private static final String ECNB0320KE = JPCBatchMessageConstant.ECNB0320KE;
	/** メッセージキー ECNB0350KE*/
	private static final String ECNB0350KE = JPCBatchMessageConstant.ECNB0350KE;
	/** メッセージキー ECNB0360KE*/
	private static final String ECNB0360KE = JPCBatchMessageConstant.ECNB0360KE;
	
	/** メッセージ出力内容 処理日付情報取得失敗*/
	private static final String CN_T_TRAN_YMD_INFO_KEY = "BAT_TRAN_CD=" + JCNStrConst.CN0301_050_TELNO_LIST;
	/** メッセージ出力内容 業務パラメータ取得失敗*/
	private static final String ZM_M_WORK_PARAM_KNRI_KEY = "WORK_PARAM_ID=" + JCNStrConst.ZM0321_050__LIST_GET_PRD;
	/** メッセージ出力内容 ジョブ名*/
	private static final String S_JOB_NAME = "050番号リスト連携";

	/** 日付フォーマット*/
	private static final String FM_YYYYMMDDHHMMSS = "yyyyMMddhhmmss";
	/** 日付比較用変数（取得開始）*/
	private Date m_date050ListStartDTM = null;
	/** 日付比較用変数（取得終了）*/
	private Date m_date050ListEndDTM =  null;
	/** 050番号リスト取得期間（取得開始時刻）*/
	private String m_str050ListStartDTM = "";
	/** 050番号リスト取得期間（取得終了時刻*/
	private String m_str050ListEndDTM = "";
	// v65.00.00 ADD START
	/** 050番号情報取得（CCMG）CC（CCMG）) */
	private static final String USECASE_ID_CNSV0062 = "CNSV0062";
	private static final String OPERATION_ID_CNSV0062OP = "CNSV0062OP";
	private static final String SERVICE_ID_CNSV006201CC = "CNSV006201CC";
	/** サービス呼出時のリターンコード："00000"（正常） */
	private static final String RETURN_CODE_00000 = "00000";
	/** リターンコード */
	private static final String RETURN_CODE = "return_code";
	/** データ取得フラグ */
	private static final String DATA_FLG = "data_flg";
	/** 契約状態フラグ　契約中(強制解約予告含む) */
	private static final String STATE_FLG_THYU = "0";
	/** 契約状態フラグ　契約終了 */
	private static final String STATE_FLG_END = "1";
	/** コンテンツ契約内訳取得情報リスト */
	private List<JBSbatCommonDBInterface> cont_kei_ucwk_InfoList =  null;
	/** コンテンツ契約内訳取得情報リスト */
	private String strTran_tg_ymd = "";

	// v65.00.00 ADD END

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CN_T_TRAN_YMD_INFO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_T_TRAN_YMD_INFO);
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		// ANK-4346-00-00 MOD START
		//db_CN_T_CONT_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_T_CONT_KEI);
		db_CN_T_CONT_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_T_CONT_KEI_UCWK);
		// ANK-4346-00-00 MOD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		// 2017/02/13 ANK-2886-00-00 ADD START
		db_KK_M_OLD_ICS_CD_CHG = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_OLD_ICS_CD_CHG);
		// 2017/02/13 ANK-2886-00-00 ADD END
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
		// ANK-4346-00-00 ADD START
		// 処理日付情報を取得する
		JBSbatCommonDBInterface paramList1 = new JBSbatCommonDBInterface();
		paramList1.setValue(JCNStrConst.CN0301_050_TELNO_LIST);  // 050電話リスト連携のバッチコード
		executeCN_T_TRAN_YMD_INFO_CN_SELECT_002(paramList1.getList().toArray());
		JBSbatCommonDBInterface resultMap1 = new JBSbatCommonDBInterface(); 
		strTran_tg_ymd = "";
		for(resultMap1 = db_CN_T_TRAN_YMD_INFO.selectNext(); null != resultMap1; resultMap1 = db_CN_T_TRAN_YMD_INFO.selectNext())
		{
			strTran_tg_ymd = resultMap1.getString("TRAN_TG_YMD");
		}
		// 処理日付情報が取得できない場合、異常終了
		if("".equals(strTran_tg_ymd))
		{
			throw new JBSbatBusinessException(ECNB0080KE, new String[] {S_JOB_NAME, D_TBL_NAME_CN_T_TRAN_YMD_INFO, CN_T_TRAN_YMD_INFO_KEY});
		}
		// 処理対象日のレプリカ連携終了時間から、24時間前までの間に契約が開始または終了した050電話番号情報を取得し、リストに格納する
		JBSbatCommonDBInterface paramList3 = new JBSbatCommonDBInterface();
		paramList3.setValue(strTran_tg_ymd);           // お客様スキーマ検索用の予約適用年月日（処理対象日：お客様スキーマ検索用
		paramList3.setValue(strTran_tg_ymd);           // サービス契約スキーマ検索用の予約適用年月日
		executeCN_T_CONT_KEI_UCWK_CN_SELECT_005(paramList3.getList().toArray());
		this.cont_kei_ucwk_InfoList = makeContkeiUcwkInfo();
		// AANK-4346-00-00 ADD END
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// パラメータ読み出し
		String strFreeParam = commonItem.getFreeItem();
		if(strFreeParam.length() == 0)
		{
			throw new JBSbatBusinessException(ECNB0230KE);
		}
		// パラメータを区切り文字で分割する
		String[] lines = strFreeParam.split(JCNStrConst.S_PARAM_DELIM);
		// パラメータ取得
		String str050ListFileName = lines[0];	// 050番号リスト連携ファイル
		
		// ANK-4346-00-00 DEL START
//		// 処理日付情報を取得する
//		JBSbatCommonDBInterface paramList1 = new JBSbatCommonDBInterface();
//		paramList1.setValue(JCNStrConst.CN0301_050_TELNO_LIST);  // 050電話リスト連携のバッチコード
//		executeCN_T_TRAN_YMD_INFO_CN_SELECT_002(paramList1.getList().toArray());
//		JBSbatCommonDBInterface resultMap1 = new JBSbatCommonDBInterface(); 
//		String strTran_tg_ymd = "";
//		for(resultMap1 = db_CN_T_TRAN_YMD_INFO.selectNext(); null != resultMap1; resultMap1 = db_CN_T_TRAN_YMD_INFO.selectNext())
//		{
//			strTran_tg_ymd = resultMap1.getString("TRAN_TG_YMD");
//		}
//		// 処理日付情報が取得できない場合、異常終了
//		if("".equals(strTran_tg_ymd))
//		{
//			throw new JBSbatBusinessException(ECNB0080KE, new String[] {S_JOB_NAME, D_TBL_NAME_CN_T_TRAN_YMD_INFO, CN_T_TRAN_YMD_INFO_KEY});
//		}
		// ANK-4346-00-00 DEL END

		// 業務パラメータを取得する
		String str050ListPrd = ""; // 050番号リスト取得期間（レプリカ連携が終了する時間を取得する）
		JBSbatCommonDBInterface paramList2 = new JBSbatCommonDBInterface();
		paramList2.setValue(JCNStrConst.ZM0321_050__LIST_GET_PRD);  // 050番号回復可能期間パラメータ
		paramList2.setValue(commonItem.getOpeDate());      // バッチ運用日
		paramList2.setValue(commonItem.getOpeDate());      // バッチ運用日
		executeZM_M_WORK_PARAM_KNRI_CN_SELECT_001(paramList2.getList().toArray());
		JBSbatCommonDBInterface resultMap2 = new JBSbatCommonDBInterface(); 
		for(resultMap2 = db_ZM_M_WORK_PARAM_KNRI.selectNext(); null != resultMap2; resultMap2 = db_ZM_M_WORK_PARAM_KNRI.selectNext())
		{
			str050ListPrd = resultMap2.getString("WORK_PARAM_SETTE_VALUE");
		}
		// 業務パラメータが取得できない場合、異常終了
		if("".equals(str050ListPrd))
		{
			throw new JBSbatBusinessException(ECNB0080KE, new String[] {S_JOB_NAME, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI, ZM_M_WORK_PARAM_KNRI_KEY});
		}
		// ANK-4346-00-00 DEL START
//		{
//			// 日付をData型へ変換
//			DateFormat formatYYYYMMDDHHMMSS = new SimpleDateFormat(FM_YYYYMMDDHHMMSS);
//			// 業務パラメータ管理から値が取得できた場合は、処理日付情報.処理対象年月日から1日を減算して、前日のレプリカ連携終了時刻を導出する。
//			m_str050ListStartDTM = JCNBatCommon.addDay(strTran_tg_ymd, -1) + str050ListPrd;
//			m_date050ListStartDTM = formatYYYYMMDDHHMMSS.parse(m_str050ListStartDTM);
//			// 処理対象日のレプリカ連携終了時刻を導出する
//			m_str050ListEndDTM = strTran_tg_ymd + str050ListPrd;
//			m_date050ListEndDTM = formatYYYYMMDDHHMMSS.parse(m_str050ListEndDTM);
//		}
		// ANK-4346-00-00 DEL END
		// ANK-4346-00-00 ADD START
		ArrayList<ArrayList<String>> lstAll050TelNoInfo = new ArrayList<ArrayList<String>>();  // ファイル出力用リスト（全件数分を格納）
		// 契約開始データの抽出と契約終了データの抽出をおこなう
		for (int i = 0; i < 2 ; i++)
		{
			// ＣＣＭＧの「CNIFE047_契約一覧情報取得API」を呼び出す
			// 参照元：JBSbatKKAuthRsltGetIktAddIvr
//			List<Map<String, Object>>  cnSv0062Map =  new ArrayList<Map<String, Object>>();
			String retCode = "";
			String retData = "";
			HashMap cnSv0062Map = null;
			try{
				// 契約一覧情報取得（CCMG）サービスを呼び出す。
				cnSv0062Map = getcnSv0062(String.valueOf(i));
				
				// サービスの処理結果より取得
				HashMap outputMap = (HashMap) cnSv0062Map.get(SERVICE_ID_CNSV006201CC);
				 
				 // リターンコード
				 retCode = (String) outputMap.get(RETURN_CODE);
				 // データ取得フラグ
				 retData = (String) outputMap.get(DATA_FLG);
			}
			catch(Exception e)
			{
				String[] outCntMsg = { "CCMGから"};
				// エラーログ出力（エラーコード："ECNB0430KE"（CCMGデータ取得エラー））
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE, outCntMsg);
			}
			
			// 正常以外の場合
			 if (JCNStringUtil.isNullEmpty(retCode)|| !RETURN_CODE_00000.equals(retCode))
			 {
				String[] outCntMsg =  new String[]{ "CCMGから", "ErrCode："+ retCode, "DataFlg : " + retData};
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0430CE, outCntMsg);
			 }
			// ANK-4346-00-00 ADD END

			// ANK-4346-00-00 DEL START
			// 処理対象日のレプリカ連携終了時間から、24時間前までの間に契約が開始または終了した050電話番号情報を取得し、リストに格納する
//			JBSbatCommonDBInterface paramList3 = new JBSbatCommonDBInterface();
			//paramList3.setValue(m_str050ListStartDTM);   // コンテンツ契約開始年月日自分秒（前日のレプリカ連携終了時刻
			//paramList3.setValue(m_str050ListEndDTM);     // コンテンツ契約開始年月日自分秒（処理対象日のレプリカ連携終了時刻
			//paramList3.setValue(m_str050ListStartDTM);   // コンテンツ契約終了年月日自分秒（前日のレプリカ連携終了時刻
			//paramList3.setValue(m_str050ListEndDTM);     // コンテンツ契約終了年月日自分秒（処理対象日のレプリカ連携終了時刻
			//paramList3.setValue(strTran_tg_ymd);           // お客様スキーマ検索用の予約適用年月日（処理対象日：お客様スキーマ検索用
			//paramList3.setValue(strTran_tg_ymd);           // サービス契約スキーマ検索用の予約適用年月日
			//executeCN_T_CONT_KEI_CN_SELECT_013(paramList3.getList().toArray());
			//ArrayList<ArrayList<String>> lstAll050TelNoInfo = new ArrayList<ArrayList<String>>();  // ファイル出力用リスト（全件数分を格納）
			// ANK-4346-00-00 DEL END

			// 同じ050電話番号のデータがある場合、最新の世代登録年月日の情報のみを出力対象とする
			String key050TelNo = "";
			// ANK-4346-00-00 MOD START
			ArrayList<String> lst050TelNoInfo = null;                                              // ファイル出力用リスト（1レコード分を格納）

			//for(resultMap3 = db_CN_T_CONT_KEI.selectNext(); null != resultMap3; resultMap3 = db_CN_T_CONT_KEI.selectNext())
			for(JBSbatCommonDBInterface resultMap3 : cont_kei_ucwk_InfoList)
			// ANK-4346-00-00 MOD END
			{

				super.logPrint.printDebugLog("050番号リスト連携:取得 " + "N_050_TELNO=" + (String)resultMap3.getString("N_050_TELNO")
						+ " GENE_ADD_DTM=" + (String)resultMap3.getString("GENE_ADD_DTM"));			

				// 電話番号、世代登録年月日(降順)で取得される為、前データとキーが違う場合は出力対象、同じ場合は出力対象外とする
				if (!key050TelNo.equals((String)resultMap3.getString("N_050_TELNO")))
				{
					// 取得したレコードを元にファイル出力用のStringリストに値を格納する
					// ANK-4346-00-00 MOD START
//					lst050TelNoInfo = createOutputStringList(resultMap3);
//					lstAll050TelNoInfo.add(lst050TelNoInfo);
//					// キーをセット
//					key050TelNo = (String)resultMap3.getString("N_050_TELNO");
//					super.logPrint.printDebugLog("050番号リスト連携:出力 " + "N_050_TELNO=" + (String)resultMap3.getString("N_050_TELNO")
//							+ " GENE_ADD_DTM=" + (String)resultMap3.getString("GENE_ADD_DTM"));
//					System.out.print("SYSID :" + resultMap3.getString("SYSID"));
//					System.out.println("コンテンツ契約番号 :" + resultMap3.getString("CONT_KEI_NO"));
					lst050TelNoInfo = createOutputStringList(resultMap3, cnSv0062Map); 
					// マッピングした情報がある場合のみリストに追加する
					if(lst050TelNoInfo.size() > 0)
					{
						lstAll050TelNoInfo.add(lst050TelNoInfo);
						// キーをセット
						key050TelNo = (String)resultMap3.getString("N_050_TELNO");
						super.logPrint.printDebugLog("050番号リスト連携:出力 " + "N_050_TELNO=" + (String)resultMap3.getString("N_050_TELNO")
								+ " GENE_ADD_DTM=" + (String)resultMap3.getString("GENE_ADD_DTM"));
					}
					// ANK-4346-00-00 MOD END

				}
			}
		// ANK-4346-00-00 ADD START
		}
		// ANK-4346-00-00 ADD END
		
		// 050番号復活不可リスト連携ファイル出力
		boolean bDoubleQuote = true;
		// ANK-4346-00-00 ADD START
		// 重複行を削除する
		HashSet<ArrayList<String>> set = new HashSet<ArrayList<String>>(lstAll050TelNoInfo);
		lstAll050TelNoInfo.clear();
		lstAll050TelNoInfo.addAll(set);
		// ANK-4346-00-00 ADD END
		createSendFile(str050ListFileName, lstAll050TelNoInfo, bDoubleQuote);

		// 処理日付情報更新
		JBSbatCommonDBInterface paramList4 = new JBSbatCommonDBInterface();
		paramList4.setValue(JCNBatCommon.addDay(strTran_tg_ymd, 1));
		paramList4.setValue(JCNStrConst.CN0301_050_TELNO_LIST);
		executeCN_T_TRAN_YMD_INFO_CN_UPDATE_001(paramList4.getList().toArray());
		
		// 処理結果ログ出力
		super.logPrint.printBusinessErrorLog(ECNB0090AI, new String[]{str050ListFileName, String.valueOf(lstAll050TelNoInfo.size())});
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CN_T_TRAN_YMD_INFO.close();
		db_ZM_M_WORK_PARAM_KNRI.close();
		// ANK-4346-00-00 MOD START
		//db_CN_T_CONT_KEI.close();
		db_CN_T_CONT_KEI_UCWK.close();
		// ANK-4346-00-00 MOD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		// 2017/02/13 ANK-2886-00-00 ADD START
		db_KK_M_OLD_ICS_CD_CHG.close();
		// 2017/02/13 ANK-2886-00-00 ADD END
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * 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 executeCN_T_TRAN_YMD_INFO_CN_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CN_T_TRAN_YMD_INFO.selectBySqlDefine(paramList, CN_T_TRAN_YMD_INFO_CN_SELECT_002);
	}

	/**
	 * SQLKEY(CN_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	業務パラメータID
	 *		 	業務パラメータ適用開始年月日
	 *		 	業務パラメータ適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_CN_SELECT_001(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_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_CN_SELECT_001);
	}

	// ANK-4346-00-00 MOD START
	///**
	// * SQLKEY(CN_SELECT_013)でDBアクセスを行います。<br>
	// * <p>
	// * <b>処理フロー</b><br>
	// * <pre>
	// * 1.引数でバイント変数を設定します。<br>
	// *
	// * 2.DBアクセスを実行します。<br>
	// * 
	// * 3.メソッドの呼び出し方です。<br>
	// *		引数:
	// *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	// *		 	コンテンツ契約開始年月日時分秒
	// *		 	コンテンツ契約開始年月日時分秒
	// *		 	コンテンツ契約終了年月日時分秒
	// *		 	コンテンツ契約終了年月日時分秒
	// *		 	予約適用年月日
	// *		 	予約適用年月日
	// * </pre>
	// * <p>
	// * @param param バイント変数の値配列。
	// * @throws Exception 業務サービス内で発生した例外全般。
	// */
	//private void executeCN_T_CONT_KEI_CN_SELECT_013(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());
    //
	//	// DBアクセスを実行します
	//	db_CN_T_CONT_KEI.selectBySqlDefine(paramList, CN_T_CONT_KEI_CN_SELECT_013);
	//}
	/**
	 * SQLKEY(CN_SELECT_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCN_T_CONT_KEI_UCWK_CN_SELECT_005(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CN_T_CONT_KEI_UCWK.selectBySqlDefine(paramList, CN_T_CONT_KEI_UCWK_CN_SELECT_005);
	}
	// ANK-4346-00-00 MOD END

	/**
	 * 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 executeCN_T_TRAN_YMD_INFO_CN_UPDATE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CN_T_TRAN_YMD_INFO.executeBySqlDefine(paramList, CN_T_TRAN_YMD_INFO_CN_UPDATE_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

//	// ANK-4346-00-00 DEL START
//	/**
//	 * ファイル出力用の文字列リストを作成します。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数でDBから取得したMapを設定します。<br>
//	 *
//	 * 2.引数をもとに文字列リストを出力します。<br>
//	 * 
//	 * </pre>
//	 * <p>
//	 * @param mapOneRecord           DBから取得した1レコード分のMap。
//	 * @throws Exception             業務サービス内で発生した例外全般。
//	 * @return 出力用の文字列List
//	 */
//	private ArrayList<String>  createOutputStringList(JBSbatCommonDBInterface mapOneRecord) throws Exception
//	{
//		ArrayList<String> resList = new ArrayList<String>();
//		
//		// SYSIDとコンテンツ契約番号を取得しておく（エラーログ情報で使用する）
//		String strSysID = mapOneRecord.getString("SYSID");
//		if(strSysID == null)
//		{
//			strSysID = "";
//		}
//		String strContKeiNo = mapOneRecord.getString("CONT_KEI_NO");
//		if(strContKeiNo == null)
//		{
//			strContKeiNo = "";
//		}
//		
//		// 2017/02/13 ANK-2886-00-00 MDD START
////		// 種別（更新または削除）
////		String strKeiEndDTM = mapOneRecord.getString("CONT_KEI_END_DTM");
////		String strSyoriSbt = "";
////		if (contKeiDtmCheck(strKeiEndDTM))
////		{
////			// コンテンツ契約終了年月日時分秒が、処理対象日の範囲内であれば「削除」を設定
////			strSyoriSbt = "01";
////		}
////		else
////		{
////			// 上記以外は「更新」を設定
////			strSyoriSbt = "00";
////		}
////		resList.add(strSyoriSbt);
//
//		// 種別（固定値/更新）
//		resList.add("00");
//		// 2017/02/13 ANK-2886-00-00 MDD END
//		
//		// 電番区分（固定値）
//		resList.add("21");
//
//		// 電話番号（空文字チェックあり）
//		String str050TelNo = mapOneRecord.getString("N_050_TELNO");
//		if (JCNBatCommon.isNotNullCheck(str050TelNo))
//		{
//			resList.add(str050TelNo);
//		}
//		else
//		{
//			// 電話番号が空文字であればエラー
//			throw new JBSbatBusinessException(ECNB0350KE, new String[] {"CONT_KEI_NO=" + strContKeiNo, "050電話番号"});
//		}
//
//		// サービス契約番号（空文字チェックあり）
//		String strSvcKeilNo = mapOneRecord.getString("SVC_KEI_NO");
//		if (JCNBatCommon.isNotNullCheck(strSvcKeilNo))
//		{
//			resList.add(strSvcKeilNo);
//		}
//		else
//		{
//			// サービス契約番号が空文字であればエラー
//			throw new JBSbatBusinessException(ECNB0350KE, new String[] {"SYSID=" + strSysID, "サービス契約番号"});
//		}
//
//		// SW顧客ID（固定値）
//		// 2017/02/13 ANK-2886-00-00 MDD START
////		resList.add("0000000000");
//		resList.add("0");
//		// 2017/02/13 ANK-2886-00-00 MDD END
//		
//		// eonetID（空文字列を設定）
//		resList.add("");
//
//		// 会員種別に合わせて顧客名を設定
//		String strMemberSbtCd = mapOneRecord.getString("MEMBER_SBT_CD");
//		if (!JCNBatCommon.isNotNullCheck(strMemberSbtCd))
//		{
//			// 会員種別がNULLだったらエラー
//			throw new JBSbatBusinessException(ECNB0350KE, new String[] {"SYSID=" + strSysID, "会員種別コード"});
//		}
//		// マスタ会員
//		if (strMemberSbtCd.equals(JCNStrConst.CD00039_MASTER_KOJIN)
//				|| strMemberSbtCd.equals(JCNStrConst.CD00039_MASTER_HOJIN))
//		{
//			// 顧客名（空文字チェックあり）
//			String strKokyakuNm = mapOneRecord.getString("CUST_NM");
//			if (JCNBatCommon.isNotNullCheck(strKokyakuNm))
//			{
//				resList.add(strKokyakuNm);
//			}
//			else
//			{
//				// マスター会員の場合でも未移行会員の場合顧客名はnullのため、コンテンツ顧客名をセット
//				// コンテンツ顧客名（空文字チェックあり）
//				strKokyakuNm = mapOneRecord.getString("CONT_CUST_NM");
//				if (JCNBatCommon.isNotNullCheck(strKokyakuNm))
//				{
//					resList.add(strKokyakuNm);
//				}
//				else
//				{
//					// コンテンツ顧客名が空文字であればエラー
//					throw new JBSbatBusinessException(ECNB0350KE, new String[] {"SYSID=" + strSysID, "コンテンツ顧客名"});
//				}
//			}
//			// 顧客名カナ（空文字チェックあり）
//			String strKokyakuNmKana = mapOneRecord.getString("CUST_KANA");
//			if (JCNBatCommon.isNotNullCheck(strKokyakuNmKana))
//			{
//				resList.add(strKokyakuNmKana);
//			}
//			else
//			{
//				// マスター会員の場合でも未移行会員の場合顧客名カナはnullのため、コンテンツ顧客名カナをセット
//				// コンテンツ顧客名カナ（空文字チェックあり）
//				strKokyakuNmKana = mapOneRecord.getString("CONT_CUST_KANA");
//				if (JCNBatCommon.isNotNullCheck(strKokyakuNmKana))
//				{
//					resList.add(strKokyakuNmKana);
//				}
//				else
//				{
//					// コンテンツ顧客名カナが空文字であればエラー
//					throw new JBSbatBusinessException(ECNB0350KE, new String[] {"SYSID=" + strSysID, "コンテンツ顧客名カナ"});
//				}
//			}
//		}
//		// ファミリー会員、オープン会員
//		else if (strMemberSbtCd.equals(JCNStrConst.CD00039_FAMILY_KOJIN) 
//				|| strMemberSbtCd.equals(JCNStrConst.CD00039_FAMILY_HOJIN) 
//				|| strMemberSbtCd.equals(JCNStrConst.CD00039_OPEN))
//		{
//			// コンテンツ顧客名（空文字チェックあり）
//			String strKokyakuNm = mapOneRecord.getString("CONT_CUST_NM");
//			if (JCNBatCommon.isNotNullCheck(strKokyakuNm))
//			{
//				resList.add(strKokyakuNm);
//			}
//			else
//			{
//				// コンテンツ顧客名が空文字であればエラー
//				throw new JBSbatBusinessException(ECNB0350KE, new String[] {"SYSID=" + strSysID, "コンテンツ顧客名"});
//			}
//			// コンテンツ顧客名カナ（空文字チェックあり）
//			String strKokyakuNmKana = mapOneRecord.getString("CONT_CUST_KANA");
//			if (JCNBatCommon.isNotNullCheck(strKokyakuNmKana))
//			{
//				resList.add(strKokyakuNmKana);
//			}
//			else
//			{
//				// コンテンツ顧客名カナが空文字であればエラー
//				throw new JBSbatBusinessException(ECNB0350KE, new String[] {"SYSID=" + strSysID, "コンテンツ顧客名カナ"});
//			}
//		}
//
//		// サービスコード（空文字列を設定）
//		resList.add("");
//
//		// 2017/02/13 ANK-2886-00-00 MOD START
////		// 契約状態コード（空文字列を設定）
////		resList.add("");
//		
//		// 契約状態コードの取得
//		String kei_stat_cd = "";			// 旧ICS契約状態コード
//		String svc_kei_stat_cd_old = mapOneRecord.getString("CONT_KEI_UCWK_STAT");
//		Object[] setParam002 = {
//				svc_kei_stat_cd_old,		// コンテンツ契約内訳ステータス
//				commonItem.getOpeDate(),	// 運用日付
//		};
//		
//		// 旧ICSコード変換(サービス契約ステータス → 旧ICS契約状態コード)
//		executeKK_M_OLD_ICS_CD_CHG_KK_SELECT_002(setParam002);
//		
//		// 結果を取得
//		JBSbatCommonDBInterface rcvMap002 = db_KK_M_OLD_ICS_CD_CHG.selectNext();
//	
//		if (null != rcvMap002)
//		{
//			// 旧ICS契約状態コード
//			kei_stat_cd = rcvMap002.getString(JBSbatKK_M_OLD_ICS_CD_CHG.OLD_ICS_KEI_STAT_CD);
//		}
//		// 契約状態コード
//		resList.add(kei_stat_cd);
//		// 2017/02/13 ANK-2886-00-00 MOD END
//		
//		// 受付番号（空文字列を設定）
//		resList.add("");
//
//		// SYSID（空文字エラーチェック不要）
//		resList.add(strSysID);
//		// eoID（空文字エラーチェック不要）
//		resList.add(mapOneRecord.getString("EOID"));
//
//		// 2017/02/13 ANK-2886-00-00 MDD START
//		// 契約識別番号
//		resList.add(mapOneRecord.getString("CONT_KEI_UCWK_NO"));
//		
//		// 解約／キャンセル年月日
//		// ---コンテンツ契約内訳のコンテンツ契約内訳ステータス毎に以下の内容を設定する。
//		// ---@解約済の場合、「コンテンツ契約内訳」のサービス終了年月日時分秒(上8桁)を設定する。
//		// ---A上記以外の場合、設定しない。
//		String dsl_cancel_ymd      = "";	// 解約／キャンセル年月日
//		if(svc_kei_stat_cd_old.equals(SVC_KEI_STAT_910))
//		{	// 解約済の場合
//			dsl_cancel_ymd = mapOneRecord.getString("SVC_END_DTM");
//		}
//		resList.add(dsl_cancel_ymd);
//		
//		// 料金グループコード
//		resList.add(mapOneRecord.getString("PRC_GRP_CD"));
//
////		// 予備３から１０（空文字列を設定）
////		for (int i = 3 ;i <= 10; i++)
//		// 予備６から１０（空文字列を設定）
//		for (int i = 6 ;i <= 10; i++)
//		// 2017/02/13 ANK-2886-00-00 MDD END
//		{
//			resList.add("");
//		}
//		
//		return resList;
//	}
	// ANK-4346-00-00 DEL END

	// ANK-4346-00-00 DEL START
//	/**
//	 * コンテンツ契約開始終了年月日のチェックを行います。<br>
//	 * <p>
//	 * <b>処理概要</b><br>
//	 * コンテンツ契約開始または終了年月日自分秒が<br>
//	 * 処理対象日の範囲であるかチェックします。<br>
//	 * <p>
//	 * @param strContKeiDTM		コンテンツ契約開始（終了）年月日時分秒
//	 * @return					範囲内：true、範囲外：false
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private boolean contKeiDtmCheck(String strContKeiDTM) throws Exception
//	{
//		boolean checkFlg = true;
//		// 日付をData型へ変換
//		DateFormat formatYYYYMMDDHHMMSS = new SimpleDateFormat(FM_YYYYMMDDHHMMSS);
//		Date dateContKeiDTM = formatYYYYMMDDHHMMSS.parse(strContKeiDTM);
//		// コンテンツ契約開始（終了）年月日時分秒が処理対象日の範囲外であるかチェック
//		if (m_date050ListStartDTM.compareTo(dateContKeiDTM) > 0 || m_date050ListEndDTM.compareTo(dateContKeiDTM) < 0)
//		{
//			checkFlg = false;
//		}
//		return checkFlg;
//	}
	// ANK-4346-00-00 DEL END

	/**
	 * 連携用ファイルの出力を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で出力ファイル名(フルパス)を設定します。<br>
	 *
	 * 2.引数をもとに連携用ファイルを出力します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param strFilePass      ファイル名。
	 * @param lstAllOutPutData ファイル出力内容リスト。サイズ0のリストが指定された場合は0バイトの空ファイルを作成する。
	 * @param bDoubleQuote     データ部分をダブルクォートで囲む場合はtrueを設定する。
	 * @throws Exception       業務サービス内で発生した例外全般。
	 */
	private static void createSendFile(String strFilePass, ArrayList<ArrayList<String>> lstAllOutPutData, boolean bDoubleQuote) throws Exception
	{
		JBSbatBusinessFileUtil obj1 = null;
		try
		{
			// 出力ファイル生成
			obj1 = JCCBatCommon.createBusinessFileUtil(strFilePass, JCNStrConst.SJIS, 
					JCNStrConst.S_LINE_SEPARAOR_LF, JCNStrConst.S_SEP_CAM);
			if(bDoubleQuote)
			{
				for(ArrayList<String> lstOutPutData: lstAllOutPutData)
				{
					JCNBatCommon.printDoubleQuoteBusinessFileUtil(obj1, lstOutPutData);
				}
			}
			else
			{
				for(ArrayList<String> lstOutPutData: lstAllOutPutData)
				{
					JCNBatCommon.printBusinessFileUtil(obj1, lstOutPutData);
				}
			}
		}
		catch (IOException ie)
		{
			throw new JBSbatBusinessException(ECNB0320KE, new String[] {strFilePass});
		}
		finally
		{
			if(obj1 != null)
			{
				JCNBatCommon.closeBusinessFileUtil(obj1);
			}
		}
	}
	
	// 2017/02/13 ANK-2886-00-00 ADD START
	/**
	 * SQLKEY(KK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	契約ステータス
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_OLD_ICS_CD_CHG_KK_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_M_OLD_ICS_CD_CHG.selectBySqlDefine(paramList, KK_M_OLD_ICS_CD_CHG_KK_SELECT_002);
	}
	// 2017/02/13 ANK-2886-00-00 ADD END
	// ANK-4346-00-00 ADD START
	/**
	 * CNIFE047_契約一覧情報取得APIサービスの入力情報を設定。
	 * @param apiPattern
	 * @return HashMap<String, Object>
	 * @throws Exception 例外
	 */
	private HashMap<String, Object> getcnSv0062(
			String apiPattern
			) throws Exception
	{
		HashMap<String, Object> reqMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		// コンテンツサービスID
		reqMap.put("contents_id", JCNStrConst.CN0011_CONT_SVC_CD_050);
		int intTranTgYmd = Integer.parseInt(strTran_tg_ymd);
		//処理対象日前日
		String startDtm = JCNBatCommon.addDay(strTran_tg_ymd, -1);
		// 契約開始データの抽出の場合
		if ( "0".equals(apiPattern ))
		{
			//契約開始日時（終了）：処理対象日当日
			reqMap.put("contract_start_date_to", strTran_tg_ymd + "22");
			// 契約開始日時（開始）：処理対象日前日
			reqMap.put("contract_start_date_from", startDtm + "23");
			// 契約状態フラグ　契約中
			reqMap.put("state", STATE_FLG_THYU);
		}
		else
		{
			// 契約終了日時（終了）：処理対象日当日の22:59:59
			reqMap.put("contract_end_date_to", strTran_tg_ymd + "22");
			// 契約終了日時（開始）：処理対象日前日の23:00:00
			reqMap.put("contract_end_date_from", startDtm + "23" );
			// 契約状態フラグ　契約終了
			reqMap.put("state", STATE_FLG_END);
		}
		// 非継続フラグ：0（自動継続）
		reqMap.put("uncontinue_flg", "0");
		// 料金フラグ：1（有料）
		reqMap.put("price_flg", "1");
		// コンテンツ契約情報要否
		reqMap.put("return_contract", "1");
		// 直近課金情報要否
		reqMap.put("return_charge", "0");
		// 契約付加情報要否
		reqMap.put("return_contract_adds", "0");
		
		inputMap.put(SERVICE_ID_CNSV006201CC, reqMap);

		// ユースケースIDを格納するMAP
		HashMap<Object, Object> paramMap = new HashMap<Object, Object>();
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CNSV0062);
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, OPERATION_ID_CNSV0062OP);
		
		// サービスの処理結果が格納されるMAP
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// サービス呼び出し
		JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
		
		return outputMap;
	}
	/**
	 * ファイル出力用の文字列リストを作成します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でDBから取得したMapを設定します。<br>
	 *
	 * 2.引数をもとに文字列リストを出力します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param mapOneRecord           DBから取得した1レコード分のMap。
	 * @throws Exception             業務サービス内で発生した例外全般。
	 * @return 出力用の文字列List
	 */
	private ArrayList<String>  createOutputStringList(JBSbatCommonDBInterface mapOneRecord , HashMap cnSv0062Map) throws Exception
	{
		ArrayList ccmgResultList = null;
		HashMap parentMap = null;
		ArrayList<String> resList = new ArrayList<String>();
		
		String ccmgSysid = "";
		String ccmgContractNo = "";
		parentMap = (HashMap) cnSv0062Map.get(SERVICE_ID_CNSV006201CC);
		ccmgResultList = (ArrayList) parentMap.get("cont_kei_list");
		for(int i = 0; i < ccmgResultList.size(); i++)
		{
			HashMap ccmgResultMap = (HashMap)ccmgResultList.get(i);
			if(!JCNStringUtil.isNullBlank((String)ccmgResultMap.get("sysid")) && !JCNStringUtil.isNullBlank((String)ccmgResultMap.get("contract_no")))
			{
				// コンテンツ契約情報取得.SYSID
				ccmgSysid = (String) ccmgResultMap.get("sysid");
				// コンテンツ契約情報取得.契約番号
				ccmgContractNo = (String) ccmgResultMap.get("contract_no");

				// コンテンツ契約一覧情報取得結果のSYSIDと契約番号が一致する場合のみマッピングを行う
				if(ccmgSysid.equals(mapOneRecord.getString("SYSID")) && ccmgContractNo.equals(mapOneRecord.getString("CONT_KEI_NO")))
				{
					// SYSIDとコンテンツ契約番号を取得しておく（エラーログ情報で使用する）
					String strSysID = mapOneRecord.getString("SYSID");
					if(strSysID == null)
					{
						strSysID = "";
					}
					String strContKeiNo = mapOneRecord.getString("CONT_KEI_NO");
					if(strContKeiNo == null)
					{
						strContKeiNo = "";
					}
					

					// 種別（固定値/更新）
					resList.add("00");
					
					// 電番区分（固定値）
					resList.add("21");

					// 電話番号（空文字チェックあり）
					String str050TelNo = mapOneRecord.getString("N_050_TELNO");
					if (JCNBatCommon.isNotNullCheck(str050TelNo))
					{
						resList.add(str050TelNo);
					}
					else
					{
						// 電話番号が空文字であればエラー
						throw new JBSbatBusinessException(ECNB0350KE, new String[] {"CONT_KEI_NO=" + strContKeiNo, "050電話番号"});
					}

					// サービス契約番号（空文字チェックあり）
					String strSvcKeilNo = mapOneRecord.getString("SVC_KEI_NO");
					if (JCNBatCommon.isNotNullCheck(strSvcKeilNo))
					{
						resList.add(strSvcKeilNo);
					}
					else
					{
						// サービス契約番号が空文字であればエラー
						throw new JBSbatBusinessException(ECNB0350KE, new String[] {"SYSID=" + strSysID, "サービス契約番号"});
					}

					// SW顧客ID（固定値）
					resList.add("0");
					
					// eonetID（空文字列を設定）
					resList.add("");

					// 会員種別に合わせて顧客名を設定
					String strMemberSbtCd = mapOneRecord.getString("MEMBER_SBT_CD");
					if (!JCNBatCommon.isNotNullCheck(strMemberSbtCd))
					{
						// 会員種別がNULLだったらエラー
						throw new JBSbatBusinessException(ECNB0350KE, new String[] {"SYSID=" + strSysID, "会員種別コード"});
					}
					// マスタ会員
					if (strMemberSbtCd.equals(JCNStrConst.CD00039_MASTER_KOJIN)
							|| strMemberSbtCd.equals(JCNStrConst.CD00039_MASTER_HOJIN))
					{
						// 顧客名（空文字チェックあり）
						String strKokyakuNm = mapOneRecord.getString("CUST_NM");
						if (JCNBatCommon.isNotNullCheck(strKokyakuNm))
						{
							resList.add(strKokyakuNm);
						}
						else
						{
							// マスター会員の場合でも未移行会員の場合顧客名はnullのため、コンテンツ顧客名をセット
							// コンテンツ顧客名（空文字チェックあり）
							strKokyakuNm = mapOneRecord.getString("CONT_CUST_NM");
							if (JCNBatCommon.isNotNullCheck(strKokyakuNm))
							{
								resList.add(strKokyakuNm);
							}
							else
							{
								// コンテンツ顧客名が空文字であればエラー
								throw new JBSbatBusinessException(ECNB0350KE, new String[] {"SYSID=" + strSysID, "コンテンツ顧客名"});
							}
						}
						// 顧客名カナ（空文字チェックあり）
						String strKokyakuNmKana = mapOneRecord.getString("CUST_KANA");
						if (JCNBatCommon.isNotNullCheck(strKokyakuNmKana))
						{
							resList.add(strKokyakuNmKana);
						}
						else
						{
							// マスター会員の場合でも未移行会員の場合顧客名カナはnullのため、コンテンツ顧客名カナをセット
							// コンテンツ顧客名カナ（空文字チェックあり）
							strKokyakuNmKana = mapOneRecord.getString("CONT_CUST_KANA");
							if (JCNBatCommon.isNotNullCheck(strKokyakuNmKana))
							{
								resList.add(strKokyakuNmKana);
							}
							else
							{
								// コンテンツ顧客名カナが空文字であればエラー
								throw new JBSbatBusinessException(ECNB0350KE, new String[] {"SYSID=" + strSysID, "コンテンツ顧客名カナ"});
							}
						}
					}
					// ファミリー会員、オープン会員
					else if (strMemberSbtCd.equals(JCNStrConst.CD00039_FAMILY_KOJIN) 
							|| strMemberSbtCd.equals(JCNStrConst.CD00039_FAMILY_HOJIN) 
							|| strMemberSbtCd.equals(JCNStrConst.CD00039_OPEN))
					{
						// コンテンツ顧客名（空文字チェックあり）
						String strKokyakuNm = mapOneRecord.getString("CONT_CUST_NM");
						if (JCNBatCommon.isNotNullCheck(strKokyakuNm))
						{
							resList.add(strKokyakuNm);
						}
						else
						{
							// コンテンツ顧客名が空文字であればエラー
							throw new JBSbatBusinessException(ECNB0350KE, new String[] {"SYSID=" + strSysID, "コンテンツ顧客名"});
						}
						// コンテンツ顧客名カナ（空文字チェックあり）
						String strKokyakuNmKana = mapOneRecord.getString("CONT_CUST_KANA");
						if (JCNBatCommon.isNotNullCheck(strKokyakuNmKana))
						{
							resList.add(strKokyakuNmKana);
						}
						else
						{
							// コンテンツ顧客名カナが空文字であればエラー
							throw new JBSbatBusinessException(ECNB0350KE, new String[] {"SYSID=" + strSysID, "コンテンツ顧客名カナ"});
						}
					}

					// サービスコード（空文字列を設定）
					resList.add("");

					// 契約状態コードの取得
					String kei_stat_cd = "";			// 旧ICS契約状態コード
					String svc_kei_stat_cd_old = mapOneRecord.getString("CONT_KEI_UCWK_STAT");
					Object[] setParam002 = {
							svc_kei_stat_cd_old,		// コンテンツ契約内訳ステータス
							commonItem.getOpeDate(),	// 運用日付
					};
					
					// 旧ICSコード変換(サービス契約ステータス → 旧ICS契約状態コード)
					executeKK_M_OLD_ICS_CD_CHG_KK_SELECT_002(setParam002);
					
					// 結果を取得
					JBSbatCommonDBInterface rcvMap002 = db_KK_M_OLD_ICS_CD_CHG.selectNext();
				
					if (null != rcvMap002)
					{
						// 旧ICS契約状態コード
						kei_stat_cd = rcvMap002.getString(JBSbatKK_M_OLD_ICS_CD_CHG.OLD_ICS_KEI_STAT_CD);
					}
					// 契約状態コード
					resList.add(kei_stat_cd);
					
					// 受付番号（空文字列を設定）
					resList.add("");

					// SYSID（空文字エラーチェック不要）
					resList.add(strSysID);
					// eoID（空文字エラーチェック不要）
					resList.add(mapOneRecord.getString("EOID"));

					// 契約識別番号
					resList.add(mapOneRecord.getString("CONT_KEI_UCWK_NO"));
					
					// 解約／キャンセル年月日
					// ---コンテンツ契約内訳のコンテンツ契約内訳ステータス毎に以下の内容を設定する。
					// ---@解約済の場合、「コンテンツ契約内訳」のサービス終了年月日時分秒(上8桁)を設定する。
					// ---A上記以外の場合、設定しない。
					String dsl_cancel_ymd      = "";	// 解約／キャンセル年月日
					if(svc_kei_stat_cd_old.equals(SVC_KEI_STAT_910))
					{	// 解約済の場合
						dsl_cancel_ymd = mapOneRecord.getString("SVC_END_DTM");
					}
					resList.add(dsl_cancel_ymd);
					
					// 料金グループコード
					resList.add(mapOneRecord.getString("PRC_GRP_CD"));

					// 予備６から１０（空文字列を設定）
					for (int j = 6 ;j <= 10; j++)
					{
						resList.add("");
					}
					
					return resList;
				}
			}
		}
		return resList;
	}

	/**
	 * コンテンツ契約内訳照会結果をマッピングする<br>
	 * @throws Exception             業務サービス内で発生した例外全般。
	 * @return 出力用の文字列List
	 */
	private List<JBSbatCommonDBInterface>  makeContkeiUcwkInfo() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeInfo]");
		
		ArrayList<JBSbatCommonDBInterface> infoList = null;
		infoList = new ArrayList<JBSbatCommonDBInterface>();
		JBSbatCommonDBInterface resultMap3 = new JBSbatCommonDBInterface();
		for(resultMap3 = db_CN_T_CONT_KEI_UCWK.selectNext(); null != resultMap3; resultMap3 = db_CN_T_CONT_KEI_UCWK.selectNext())
		{
			infoList.add(resultMap3);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeInfo]");
		return infoList;
	}
	
	// ANK-4346-00-00 ADD END
}
