/*********************************************************************
*  All Rights reserved,Copyright (c) Fujitsu ,2011					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACNHKWtchegIfOutPrcTrkm
*	ソースファイル名	：JBSbatACNHKWtchegIfOutPrcTrkm.java
*	作成者				：富士通　
*	作成日				：2011年07月06日
*＜機能概要＞
*　ＮＨＫ視聴課金情報外部料金取込データ作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/06   富士通		新規作成
*	v3.00		2012/05/21   FJ)永田	【ANK-0024-04-00】	
*	v4.00		2012/12/25   FJ)前田	【ST1-2012-0000720】
*	v5.00		2013/10/15   FJ)前田	【OM-2013-0001120】ディレイド二重起動防止対応
*	v8.00.00	2013/12/11   FJ)柴田	【ANK-1584-00-00】出力ファイルにサービス詳細識別番号を追加。
*	v9.00.00	2014/08/12   FJ)鈴木	【OM-2014-0002245】料金サービス管理Ｍを初期処理で検索する（性能改善）。
*	v12.00.00	2014/10/03   FJ)岡田	【ANK-2248-00-00】NHK団体一括契約の受付拡充
*	v12.00.01	2014/10/21   FJ)岡田	【IT1-2014-0000339】外部料金取込データ作成ファイル出力内容変更
*	v12.00.02	2015/02/25   FJ)桑島	【OM-2015-0000046】支払サイクルコードの変更対応
*	v23.00.00	2016/03/18	 FJ)松岡	【OM-2016-0000545】性能障害対応
*	v25.00.00	2016/07/26	 FJ)岡田	【OM-2016-0001766】
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;

import eo.business.common.JACBatCommon;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCCbatShoriIraiUtil;
import eo.business.util.file.JBSbatACIFM014;
import eo.business.util.file.JBSbatACIFM097;
import eo.business.util.table.JBSbatAC_T_NHK_WTCHCRG_DTL;
import eo.business.util.table.JBSbatAC_T_NHK_WTCHCRG_TJK;
import eo.business.util.table.JBSbatAC_T_SVKEI_CHIKUSEKI;
import eo.business.util.table.JBSbatCH_M_PRC_KMK_CS_CHGE;
import eo.business.util.table.JBSbatCH_M_PRC_KMK_OPUT_NM;
import eo.business.util.table.JBSbatCH_M_PRC_SCHDL_TEIGI;
import eo.business.util.table.JBSbatKK_T_SEIOPSVC_KEI;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.constant.JZM0171Constant;
import eo.common.util.JPCUtilCommon;
import eo.framework.application.JBSbatBusinessError;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
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.util.JBSbatAplConst;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatACNHKWtchegIfOutPrcTrkm extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(ＮＨＫ視聴課金処理状況)*/
	private static final String D_TBL_NAME_AC_T_NHK_WTCHCRG_TJK = "AC_T_NHK_WTCHCRG_TJK";

	/** テーブル(ＮＨＫ視聴課金明細)*/
	private static final String D_TBL_NAME_AC_T_NHK_WTCHCRG_DTL = "AC_T_NHK_WTCHCRG_DTL";

	/** テーブル(サービス契約蓄積)*/
	private static final String D_TBL_NAME_AC_T_SVKEI_CHIKUSEKI = "AC_T_SVKEI_CHIKUSEKI";

	/** テーブル(料金項目抽出変換)*/
	private static final String D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE = "CH_M_PRC_KMK_CS_CHGE";
	
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(料金スケジュール定義)*/
	private static final String D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI = "CH_M_PRC_SCHDL_TEIGI";
	
	// ANK-2248-00-00 ADD START
	/** テーブル(請求オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_SEIOPSVC_KEI = "KK_T_SEIOPSVC_KEI";
	// ANK-2248-00-00 ADD END
	
	// ANK-2248-00-00 MOD START
	/** SQL定義キー(AC_SELECT_003)*/
	//private static final String AC_T_SVKEI_CHIKUSEKI_AC_SELECT_003 = "AC_SELECT_003";
	/** SQL定義キー(AC_SELECT_014)*/
	private static final String AC_T_SVKEI_CHIKUSEKI_AC_SELECT_014 = "AC_SELECT_014";
	// ANK-2248-00-00 MOD END

	/** SQL定義キー(AC_SELECT_017)*/
	private static final String CH_M_PRC_KMK_CS_CHGE_AC_SELECT_017 = "AC_SELECT_017";

	/** SQL定義キー(AC_SELECT_001)*/
	private static final String AC_T_NHK_CHRG_JOKYO_AC_SELECT_001 = "AC_SELECT_001";
	
	/** SQL定義キー(AC_SELECT_004)*/
	private static final String AC_T_NHK_WTCHCRG_DTL_AC_SELECT_004 = "AC_SELECT_004";
		
	/** SQL定義キー(AC_SELECT_001)*/
	private static final String ZM_M_CD_NM_KANRI_AC_SELECT_001 = "AC_SELECT_001";

	/** SQL定義キー(AC_SELECT_013)*/
	private static final String CH_M_PRC_SCHDL_TEIGI_AC_SELECT_013 = "AC_SELECT_013";
	
	// ANK-2248-00-00 ADD START
	/** SQL定義キー(AC_SELECT_003)*/
	private static final String KK_T_SEIOPSVC_KEI_AC_SELECT_003 = "AC_SELECT_003";
	// ANK-2248-00-00 ADD END

	/** テーブルアクセスクラス(ＮＨＫ視聴課金処理状況)*/
	private JBSbatSQLAccess db_AC_T_NHK_WTCHCRG_TJK = null;

	/** テーブルアクセスクラス(ＮＨＫ視聴課金明細)*/
	private JBSbatSQLAccess db_AC_T_NHK_WTCHCRG_DTL = null;

	/** テーブルアクセスクラス(サービス契約蓄積)*/
	private JBSbatSQLAccess db_AC_T_SVKEI_CHIKUSEKI = null;

	/** テーブルアクセスクラス(料金項目抽出変換)*/
	private JBSbatSQLAccess db_CH_M_PRC_KMK_CS_CHGE = null;
	
	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	
	/** テーブルアクセスクラス(料金スケジュール定義)*/
	private JBSbatSQLAccess db_CH_M_PRC_SCHDL_TEIGI = null;
	
	// ANK-2248-00-00 ADD START
	/** テーブルアクセスクラス(請求オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_SEIOPSVC_KEI = null;
	// ANK-2248-00-00 ADD END

	// ANK-2248-00-00 DEL START
// OM-2014-0002245 add start
	/** テーブル(料金サービス管理)*/
	//private static final String D_TBL_NAME_AC_M_PRC_SVC_KANRI = "AC_M_PRC_SVC_KANRI";
	
	/** SQL定義キー(AC_SELECT_013)*/
	//private static final String AC_M_PRC_SVC_KANRI_AC_SELECT_005 = "AC_SELECT_005";
	
	/** SQL定義キー(AC_SELECT_003)*/
	//private static final String AC_T_SVKEI_CHIKUSEKI_AC_SELECT_013 = "AC_SELECT_013";
	
	/** テーブルアクセスクラス(料金サービス管理)*/
	//private JBSbatSQLAccess db_AC_M_PRC_SVC_KANRI = null;
	
	//private Map<String, String> svcKanriMap = new HashMap<String, String>();
	
// OM-2014-0002245 add end
	// ANK-2248-00-00 DEL END
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 西暦上二桁 */
	private static final String BC20 = "20";
	
	/** 請求時期指定コード */
	private String seikyJikiShiteiCd = "";
	
	/** 処理識別コード */
	private String tranSkbtCd = "";
	
	/** 外部料金取込システム区分 */
	private String outPrcSysDiv = "";
	
	/** 業務機能識別コード */
	private String workKinoSkbCd = "";
	
	/** 未請求一時金ありエラー */
	private String[] ichjikinErr = null;
	
	/** 未請求一時金ありエラーコード */
	private String[] ichjikinErrCd = null;

	/** 利用終了日 */
	private String[] endYmd = null;
	
	/** NHK視聴課金番号 */
	private String nhkWatchChrgTrnNo = "";
	
	/** ディレイド処理依頼番号 */
	private String shoriIraiNo = "";
	
	// ANK-2248-00-00 ADD START
	/** 料金グループコード_eo光テレビ */
	private String prcGrpCdEohtv = "";
	
	// v25.00.00 ADD START
	/** 料金サービスコード_ＮＨＫ団体一括支払 */
	private static final String prcSvcCd_Nhk = "PE0201      ";
	// v25.00.00 ADD END
	
	/** 請求オプションサービス契約番号情報 */
	private HashMap<String, ArrayList<Object>> seiopSvcKeiNoInfMap = null;
	
	/** ファイル定義 */
	private static final String PRM_OTD = "OTD";
	// ANK-2248-00-00 ADD END
		
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_AC_T_NHK_WTCHCRG_TJK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_T_NHK_WTCHCRG_TJK);
		db_AC_T_NHK_WTCHCRG_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_T_NHK_WTCHCRG_DTL);
		db_AC_T_SVKEI_CHIKUSEKI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_T_SVKEI_CHIKUSEKI);
		db_CH_M_PRC_KMK_CS_CHGE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_CH_M_PRC_SCHDL_TEIGI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI);
		// ANK-2248-00-00 DEL START
// OM-2014-0002245 add start
		//db_AC_M_PRC_SVC_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_M_PRC_SVC_KANRI);
// OM-2014-0002245 add end
		// ANK-2248-00-00 DEL END
		// ANK-2248-00-00 ADD START
		db_KK_T_SEIOPSVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIOPSVC_KEI);
		// ANK-2248-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		JACbatParamUtil paramUtil = new JACbatParamUtil(commonItem);
		
		/** (1) 情報付加 */
		
		// (a)請求時期指定コード
		seikyJikiShiteiCd = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_SJC_SIKY_STI_MON);
		// (b) 処理識別コード
		tranSkbtCd = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_OPT_ADD);
		// (c) 外部料金取込システム区分
		outPrcSysDiv = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_OPS_NHK_WATCH_CRG);
		// (d) 業務機能識別コード
		workKinoSkbCd = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_WKS_OT_NK_WT_CRIF);
		//未請求一時金エラーコード取得
		ichjikinErrCd=paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_RSLT_ICJKIN_ERR).split(JACStrConst.COMMA);
		ichjikinErr=getCdNmKanri(JZM0171Constant.CD01172,ichjikinErrCd[0]);
		
		// ANK-2248-00-00 ADD START
		// 料金グループコード_eo光テレビ
		prcGrpCdEohtv = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_EOHTV_PRC_GRP_CD);
		// ANK-2248-00-00 ADD END
		
		paramUtil.close();
		
		// NHK視聴課金処理状況取得
		executeAC_T_NHK_WTCHCRG_TJK_AC_SELECT_001();
		JBSbatCommonDBInterface nhkRecord = db_AC_T_NHK_WTCHCRG_TJK.selectNext();
		if(nhkRecord != null)
		{
			nhkWatchChrgTrnNo = nhkRecord.getString(JBSbatAC_T_NHK_WTCHCRG_TJK.NHK_WTCHCRG_TJK_NO);
			shoriIraiNo = nhkRecord.getString(JBSbatAC_T_NHK_WTCHCRG_TJK.DLYD_TRN_REQ_NO);
		}
		else
		{
			// NHK視聴課金処理状況テーブルから取得できない場合はエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE, new String[] { JBSbatAC_T_NHK_WTCHCRG_TJK.TABLE_NAME });
		}

		endYmd=getNHKExit();
		
		// ANK-2248-00-00 DEL START
/*
// OM-2014-0002245 add start
		// 料金サービス管理 取得
		Object[] param = new Object[] {
				super.systemCode,
				JACStrConst.SVC_SKBT_CD_NRML,
				JACStrConst.SVC_SKBT_CD_NRML,
				super.onlineOpeDate,
				super.onlineOpeDate,
				};
		executeAC_M_PRC_SVC_KANRI_AC_SELECT_005(param);
		JBSbatCommonDBInterface mstRec = db_AC_M_PRC_SVC_KANRI.selectNext();
		if(mstRec != null) {
			while(mstRec != null){
				String pcrc_cd =mstRec.getString(JBSbatAC_M_PRC_SVC_KANRI.PCRS_CD);
				String prc_svc_cd =mstRec.getString(JBSbatAC_M_PRC_SVC_KANRI.PRC_SVC_CD);
				String key = pcrc_cd + prc_svc_cd;
				svcKanriMap.put(key, key);
				mstRec = db_AC_M_PRC_SVC_KANRI.selectNext();
			}
		}
// OM-2014-0002245 add end
*/
		// ANK-2248-00-00 DEL END
		// ANK-2248-00-00 ADD START
		// 請求オプションサービス契約番号情報用Mapの初期化
		seiopSvcKeiNoInfMap = new HashMap<String, ArrayList<Object>>();
		// ANK-2248-00-00 ADD END
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		super.logPrint.printDebugLog("onlineOpeDate" + super.onlineOpeDate);
		
		// 変数宣言
		Object[] setParam = null;
		Object[] whereParam = null;
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		JBSbatServiceInterfaceMap outputMap = new JBSbatServiceInterfaceMap();
		
		boolean checkFlag=false;

		// NHK視聴課金明細.請求年月 YYMMに変換
		String nhkSikyYYMM 		= "";
		String nhkSikyYYYMM 	= "";
		nhkSikyYYMM 			= inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.NHK_SIKY_YM).replace("/", "");
		
		// YYYYMM変換
		String nhkSikyYYYYMM 	= BC20 + nhkSikyYYMM;
		
		/** (1) 情報付加 */
		String prcGrpCd 	= "";
		String prcCourseCd 	= "";
		String prcSvcCd 	= "";
		
		try
		{
			setParam = new Object[] {
//OM-2016-0000545 MOD START 2016/03/11
//					nhkSikyYYYYMM,
//					// ANK-2248-00-00 MOD START
//					//inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.SVC_KEI_NO)
//					inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.SEIKY_KEI_NO),
//					inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.CATV_KNYSHA_CD),
//					super.onlineOpeDate
//					// ANK-2248-00-00 MOD END
//// OM-2014-0002245 del start
////					super.systemCode,
////					JACStrConst.SVC_SKBT_CD_NRML};
//// OM-2014-0002245 del end
					inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.CATV_KNYSHA_CD),
					super.onlineOpeDate,
					nhkSikyYYYYMM,
					inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.SEIKY_KEI_NO)
//OM-2016-0000545 MOD END 2016/03/11
			};
			// ANK-2248-00-00 MOD START
			//executeAC_T_SVKEI_CHIKUSEKI_AC_SELECT_003(setParam);
			executeAC_T_SVKEI_CHIKUSEKI_AC_SELECT_014(setParam);
			// ANK-2248-00-00 MOD END
			JBSbatCommonDBInterface keiRecord = db_AC_T_SVKEI_CHIKUSEKI.selectNext();
			
		
			if(keiRecord != null){
				String kakinStaYmd=keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.CHRG_STAYMD);
				
				if( endYmd[0].compareTo(kakinStaYmd) >= 0){
					
					while(keiRecord != null){
						// ANK-2248-00-00 DEL START
// OM-2014-0002245 add start
						//String pcrc_cd = keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PCRS_CD);
						//String prc_svc_cd = keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PRC_SVC_CD);
						//if(!svcKanriMap.containsKey(pcrc_cd + prc_svc_cd)) {
						//	keiRecord = db_AC_T_SVKEI_CHIKUSEKI.selectNext();
						//	continue;
						//}
// OM-2014-0002245 add end
						// ANK-2248-00-00 DEL END
						
						kakinStaYmd=keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.CHRG_STAYMD);
						 
						 if( endYmd[0].compareTo(kakinStaYmd) >= 0){
							// 最終行出力処理
								// 料金グループコード
								prcGrpCd 		= keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PRC_GRP_CD);
								// 料金コースコード
								prcCourseCd 	= keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PCRS_CD);
								// 料金サービスコード
								prcSvcCd 		= keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PRC_SVC_CD);
						 }else{
							 
							 break;
							 
						 }
						 
						 keiRecord = db_AC_T_SVKEI_CHIKUSEKI.selectNext();
						
					}
					
					checkFlag = true;
					
				}else{
					while(keiRecord != null){
						// ANK-2248-00-00 DEL START
// OM-2014-0002245 add start
						//String pcrc_cd = keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PCRS_CD);
						//String prc_svc_cd = keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PRC_SVC_CD);
						//if(!svcKanriMap.containsKey(pcrc_cd + prc_svc_cd)) {
						//	keiRecord = db_AC_T_SVKEI_CHIKUSEKI.selectNext();
						//	continue;
						//}
// OM-2014-0002245 add end
						// ANK-2248-00-00 DEL END
						String svcStaYmd =keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.SVC_STAYMD);
						if( svcStaYmd!=null && endYmd[0].compareTo(svcStaYmd) >= 0){
							
							// 最古行出力処理
							// 料金グループコード
							prcGrpCd 		= keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PRC_GRP_CD);
							// 料金コースコード
							prcCourseCd 	= keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PCRS_CD);
							// 料金サービスコード
							prcSvcCd 		= keiRecord.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PRC_SVC_CD);
						
							checkFlag = true;
							break;
						}
					
						 keiRecord = db_AC_T_SVKEI_CHIKUSEKI.selectNext();
					}
				}
			}			
	
			// (b) 料金項目コード
			String oytPrcKmkCd = "";
			
			// v25.00.00 ADD START
			// (c) 料金項目名称
			String oytPrcKmkNm = "";
			// v25.00.00 ADD END
			
			setParam = new Object[] {
					// v25.00.00 ADD START
					super.onlineOpeDate,
					super.onlineOpeDate,
					// v25.00.00 ADD END
					JACStrConst.SYS_CD_AC,
					workKinoSkbCd + inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.PAY_COURSE_CD),
					JACStrConst.CHSHT_CHG_CD_2,
					super.onlineOpeDate,
					super.onlineOpeDate,
					super.onlineOpeDate};
			executeCH_M_PRC_KMK_CS_CHGE_AC_SELECT_017(setParam);
			JBSbatCommonDBInterface prcSvcRecord = db_CH_M_PRC_KMK_CS_CHGE.selectNext();
			if (prcSvcRecord != null)
			{
				// 出力料金項目コード
				oytPrcKmkCd = prcSvcRecord.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.OUT_PRC_KMK_CD);
				
				// v25.00.00 ADD START
				if(null != prcSvcRecord.getString(JBSbatCH_M_PRC_KMK_OPUT_NM.PRC_KMK_NM))
				{
					oytPrcKmkNm = prcSvcRecord.getString(JBSbatCH_M_PRC_KMK_OPUT_NM.PRC_KMK_NM);
				}
				// v25.00.00 ADD END
				
			}
			else
			{
				// 料金項目抽出変換テーブルから取得できない場合はエラーとする
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE, new String[] { JBSbatCH_M_PRC_KMK_CS_CHGE.TABLE_NAME });
				
			}
			
			if(!checkFlag){
				//エラー情報を出力する（NHK視聴課金外部料金取込エラー情報（料金計算結果リスト））
				// v25.00.00 MOD START
				// outputItem.addOutMapList_2(setErrInfoFileMap(inMap,oytPrcKmkCd,nhkSikyYYYMM,nhkSikyYYMM ));
				outputItem.addOutMapList_2(setErrInfoFileMap(inMap,oytPrcKmkCd,nhkSikyYYYMM,nhkSikyYYMM,oytPrcKmkNm ));
				// v25.00.00 MOD END
				
				// サービス契約蓄積テーブルから取得できない場合は出力しない（暫定）
				return outputItem;
	
			}
				/** (2) 外部料金取込データ作成 */
			// 業務パラメータ管理.処理識別コード ⇒ 課金外部料金データ.処理識別コード
			outputMap.setString(JBSbatACIFM014.TRAN_SKBT_CD, tranSkbtCd);
			
			// NHK視聴課金明細.請求契約番号 ⇒ 課金外部料金データ.請求契約番号
			outputMap.setString(JBSbatACIFM014.SEIKY_KEI_NO, inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.SEIKY_KEI_NO));
			
			// ANK-2248-00-00 MOD START
			// 半角空白１０桁 ⇒ 課金外部料金データ.サービス契約番号
			//outputMap.setString(JBSbatACIFM014.SVC_KEI_NO, inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.SVC_KEI_NO));
			// IT1-2014-0000339 MOD START
			//outputMap.setString(JBSbatACIFM014.SVC_KEI_NO, JACStrConst.KARA_MOJI);
			outputMap.setString(JBSbatACIFM014.SVC_KEI_NO, JACStrConst.SVC_KEI_NO_SP);
			// IT1-2014-0000339 MOD END
			
			// 業務パラメータ管理.料金グループコード_eo光テレビ ⇒ 課金外部料金データ.料金グループコード
			//outputMap.setString(JBSbatACIFM014.PRC_GRP_CD, prcGrpCd);
			outputMap.setString(JBSbatACIFM014.PRC_GRP_CD, prcGrpCdEohtv);
			// ANK-2248-00-00 MOD END
			
			// IT1-2014-0000339 MOD START
			// 半角空白３桁 ⇒ 課金外部料金データ.料金コースコード
			//outputMap.setString(JBSbatACIFM014.PCRS_CD, prcCourseCd);
			outputMap.setString(JBSbatACIFM014.PCRS_CD, JACStrConst.PCRS_CD_SP);
			// IT1-2014-0000339 MOD END
			
			// サービス契約蓄積.料金サービスコード ⇒ 課金外部料金データ.料金サービスコード
			outputMap.setString(JBSbatACIFM014.PRC_SVC_CD, prcSvcCd);
			
			// 料金項目抽出変換.出力料金項目コード ⇒ 課金外部料金データ.料金項目コード
			outputMap.setString(JBSbatACIFM014.PRC_KMK_CD, oytPrcKmkCd);
			
			// 業務パラメータ管理.請求時期指定コード ⇒ 課金外部料金データ.請求時期指定
			outputMap.setString(JBSbatACIFM014.SEIKY_JIKI_SHITEI, seikyJikiShiteiCd);
			
			// 日付をData型へ変換
			DateFormat formatYYMM = new SimpleDateFormat("yyMM");
			Date sikyEndYm = formatYYMM.parse(nhkSikyYYMM);
			nhkSikyYYYMM = new SimpleDateFormat("yyyyMM").format(sikyEndYm);
			outputMap.setString(JBSbatACIFM014.SEIKY_YM, nhkSikyYYYMM);
			
			// NHK視聴課金明細.請求金額 ⇒ 課金外部料金データ.請求金額
			outputMap.setString(JBSbatACIFM014.SEIKY_AMNT, inMap.getBigDecimal(JBSbatAC_T_NHK_WTCHCRG_DTL.SIKY_AMNT));
			
			// 業務パラメータ．外部料金取込システム区分 ⇒ 課金外部料金データ.外部料金取込システム区分
			outputMap.setString(JBSbatACIFM014.OUT_PRC_TRKM_SYS_DIV, outPrcSysDiv);
			
			// 空文字 ⇒ 課金外部料金データ.サービス詳細識別番号
			outputMap.setString(JBSbatACIFM014.SVC_DTL_SKBT_NO, JACStrConst.KARA_MOJI);
			
			// 出力共通電文に入出力インターフェースを設定
			outputMap.setOutFlg(true);
			outputItem.addOutMapList(outputMap);
			
			// ANK-2248-00-00 ADD START
			// 契約Sへの請求サイクルの連携
			//「NHK団体一括支払サイクルコード受信」ファイル出力
			// NHK視聴課金情報の支払コースと請求オプションサービス契約のNHK一括団体支払サイクルコードが異なる場合出力します。
			super.logPrint.printDebugLog("契約Sへの請求サイクルの連携");
			super.logPrint.printDebugLog("CATV加入者コード：" + inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.CATV_KNYSHA_CD));
			super.logPrint.printDebugLog("支払コースコード：" + inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.PAY_COURSE_CD));
			
			setParam = new Object[] {
					inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.CATV_KNYSHA_CD),
					inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.PAY_COURSE_CD),
					super.onlineOpeDate};
			executeKK_T_SEIOPSVC_KEI_AC_SELECT_003(setParam);
			
			
			//OM-2015-0000046 MOD START
//			JBSbatCommonDBInterface seiopSvcRecord = db_KK_T_SEIOPSVC_KEI.selectNext();
			JBSbatCommonDBInterface seiopSvcRecord_info = db_KK_T_SEIOPSVC_KEI.selectNext();
			
			//NHK外部連携契約コードに紐づく請求オプションサービス契約番号の件数確認
			ArrayList<JBSbatCommonDBInterface> seiopSvcDataList = new ArrayList<JBSbatCommonDBInterface>();
			while(seiopSvcRecord_info != null)
			{
				seiopSvcDataList.add(seiopSvcRecord_info);
				seiopSvcRecord_info = db_KK_T_SEIOPSVC_KEI.selectNext();
			}
			
			super.logPrint.printDebugLog("seiopSvcDataList.size() --：" + seiopSvcDataList.size());
			
			//取得した請求オプションサービス契約番号の件数が複数件の場合　マイナーエラー
			if(seiopSvcDataList.size() > 1)
			{
				// EACB0560AI	%1%にて%2%件出力しました。
				String[] outCntMsg = {"請求オプションサービス契約番号の抽出", "複数"};
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0560AI, outCntMsg);
				throw new JBSbatBusinessError();
				
			}
			super.logPrint.printDebugLog("請求オプションサービス契約番号： 0件　または　1件");
			
			JBSbatCommonDBInterface seiopSvcRecord = null;
			if(seiopSvcDataList.size() == 1)
			{
				seiopSvcRecord = seiopSvcDataList.get(0);
			}
			//OM-2015-0000046 MOD END
			
			if (null != seiopSvcRecord)
			{
				// 請求オプションサービス契約番号
				String seiopSvcKeiNo = seiopSvcRecord.getString(JBSbatKK_T_SEIOPSVC_KEI.SEIOPSVC_KEI_NO);
				
				super.logPrint.printDebugLog("★契約Sへの請求サイクル連携あり★");
				super.logPrint.printDebugLog("請求オプションサービス契約番号：" + seiopSvcKeiNo);
				super.logPrint.printDebugLog("支払内容支払コース            ：" + inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.PAY_COURSE_CD));
				
				// 請求オプションサービス契約番号をキーにMapにファイル出力情報を格納します。
				ArrayList<Object> seiopSvcData = new ArrayList<Object>();
				seiopSvcData.add("\"" + seiopSvcKeiNo);												// 請求オプションサービス契約番号
				seiopSvcData.add(inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.PAY_COURSE_CD) + "\"");	// 支払内容支払コース
				
				seiopSvcKeiNoInfMap.put(seiopSvcKeiNo, seiopSvcData);
			}
			// ANK-2248-00-00 ADD END
			
			/** (3) NHK視聴課金明細更新 */
			setParam = new Object[] {super.onlineOpeDate};
			whereParam = new Object[] {
					(String)inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.CATV_KNYSHA_CD),
					(String)inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.NHK_SIKY_YM)};
			executeAC_T_NHK_WTCHCRG_DTL_PKUPDATE(setParam, whereParam);
		
		}
		catch(Exception ex)
		{
			// ロールバック実行
			this.commonItem.getConnection().rollback();

			//  エラー情報更新
			// NHK視聴課金処理状況更新
			setParam = new Object[] {0, JACStrConst.AC_T_NHK_WTCHCRG_TJK_TRKM_ERR};
			whereParam = new Object[] {nhkWatchChrgTrnNo};
			executeAC_T_NHK_WTCHCRG_TJK_PKUPDATE(setParam, whereParam);

			//  更新エラー情報を取得(初期処理で取得済)
			//  処理結果コード更新
			// ディレイド処理依頼更新
			JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, JACStrConst.DLYD_TRN_RSLT_CD_SYS_ERR, null);

			// コミット実行
			this.commonItem.getConnection().commit();
			
			// ANK-2248-00-00 ADD START
			// 「NHK団体一括支払サイクルコード受信」ファイル出力を行います。
			// ファイル名を取得
			String freeItem = commonItem.getFreeItem();
			String[] files = freeItem.split(JACStrConst.FREE_DIV);

			// ファイルを取得
			JBSbatOutputFileUtil dataFile = new JBSbatOutputFileUtil(files[1]);
			String dataFileDefName = JBSbatAplConst.getAplConstValue(PRM_OTD) + files[0];
			JBSbatDefFileUtil dataFileDef = new JBSbatDefFileUtil(dataFileDefName, dataFile);

			// 「NHK団体一括支払サイクルコード受信」ファイル出力
			ArrayList<ArrayList<Object>> seiopSvcKeiNoInfList = new ArrayList<ArrayList<Object>>(seiopSvcKeiNoInfMap.values());
			this.createSeiopSvcKeiNoInfFile(files[1], seiopSvcKeiNoInfList, dataFile.getEncode(), JACBatCommon.chgKaigyo(dataFile.getLine()), dataFileDef.getDelimiter());
			// ANK-2248-00-00 ADD END

			// メッセージ
			throw ex;
			
		}
		super.logPrint.printDebugLog("execute_END");
			return outputItem;
			
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/

		/** (1) データ更新 */
		// (a) NHK視聴課金処理状況更新
		// @ 更新条件取得
		String nhkWatchChrgTrnNo = "";
		String shoriIraiNo = "";

		executeAC_T_NHK_WTCHCRG_TJK_AC_SELECT_001();
		JBSbatCommonDBInterface nhkTjkRecord = db_AC_T_NHK_WTCHCRG_TJK.selectNext();
		if (nhkTjkRecord != null)
		{
			// NHK視聴課金処理番号
			nhkWatchChrgTrnNo = nhkTjkRecord.getString(JBSbatAC_T_NHK_WTCHCRG_TJK.NHK_WTCHCRG_TJK_NO);
			// ディレイド処理依頼番号
			shoriIraiNo = nhkTjkRecord.getString(JBSbatAC_T_NHK_WTCHCRG_TJK.DLYD_TRN_REQ_NO);

		}
		else
		{
			// NHK視聴課金処理状況テーブルから取得できない場合はエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE, new String[] { JBSbatAC_T_NHK_WTCHCRG_TJK.TABLE_NAME });

		}
		try
		{

			// 外部料金ファイル作成年月日時分秒
			String outPrcFileSakseiYmdHms = JBSbatDateUtil.getSystemDateTimeStamp();

			// A 更新実施
			Object[] nhkParam = new Object[] {outPrcFileSakseiYmdHms};
			Object[] whereParam = new Object[] {nhkWatchChrgTrnNo};
			executeAC_T_NHK_WTCHCRG_TJK_PKUPDATE(nhkParam, whereParam);

			// (b) ディレイド処理依頼更新
			shoriIraiUpd(shoriIraiNo);
			
			// ANK-2248-00-00 ADD START
			// 「NHK団体一括支払サイクルコード受信」ファイル出力を行います。
			// ファイル名を取得
			String freeItem = commonItem.getFreeItem();
			String[] files = freeItem.split(JACStrConst.FREE_DIV);

			// ファイルを取得
			JBSbatOutputFileUtil dataFile = new JBSbatOutputFileUtil(files[1]);
			String dataFileDefName = JBSbatAplConst.getAplConstValue(PRM_OTD) + files[0];
			JBSbatDefFileUtil dataFileDef = new JBSbatDefFileUtil(dataFileDefName, dataFile);

			// 「NHK団体一括支払サイクルコード受信」ファイル出力
			ArrayList<ArrayList<Object>> seiopSvcKeiNoInfList = new ArrayList<ArrayList<Object>>(seiopSvcKeiNoInfMap.values());
			this.createSeiopSvcKeiNoInfFile(files[1], seiopSvcKeiNoInfList, dataFile.getEncode(), JACBatCommon.chgKaigyo(dataFile.getLine()), dataFileDef.getDelimiter());
			// ANK-2248-00-00 ADD END

		}
		catch(Exception ex)
		{
			// ロールバック実行
			this.commonItem.getConnection().rollback();

			Object[] setParam = null;
			Object[] whereParam = null;
			//  エラー情報更新
			// NHK視聴課金処理状況更新
			setParam = new Object[] {0, JACStrConst.AC_T_NHK_WTCHCRG_TJK_TRKM_ERR};
			whereParam = new Object[] {nhkWatchChrgTrnNo};
			executeAC_T_NHK_WTCHCRG_TJK_PKUPDATE(setParam, whereParam);

			//  更新エラー情報を取得(初期処理で取得済)
			//  処理結果コード更新
			// ディレイド処理依頼更新
			JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, JACStrConst.DLYD_TRN_RSLT_CD_SYS_ERR, null);

			// コミット実行
			this.commonItem.getConnection().commit();
			
			// ANK-2248-00-00 ADD START
			// 「NHK団体一括支払サイクルコード受信」ファイル出力を行います。
			// ファイル名を取得
			String freeItem = commonItem.getFreeItem();
			String[] files = freeItem.split(JACStrConst.FREE_DIV);

			// ファイルを取得
			JBSbatOutputFileUtil dataFile = new JBSbatOutputFileUtil(files[1]);
			String dataFileDefName = JBSbatAplConst.getAplConstValue(PRM_OTD) + files[0];
			JBSbatDefFileUtil dataFileDef = new JBSbatDefFileUtil(dataFileDefName, dataFile);

			// 「NHK団体一括支払サイクルコード受信」ファイル出力
			ArrayList<ArrayList<Object>> seiopSvcKeiNoInfList = new ArrayList<ArrayList<Object>>(seiopSvcKeiNoInfMap.values());
			this.createSeiopSvcKeiNoInfFile(files[1], seiopSvcKeiNoInfList, dataFile.getEncode(), JACBatCommon.chgKaigyo(dataFile.getLine()), dataFileDef.getDelimiter());
			// ANK-2248-00-00 ADD END

			// メッセージ
			throw ex;

		}
		
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_AC_T_NHK_WTCHCRG_TJK.close();
		db_AC_T_NHK_WTCHCRG_DTL.close();
		db_AC_T_SVKEI_CHIKUSEKI.close();
		db_CH_M_PRC_KMK_CS_CHGE.close();
		db_ZM_M_CD_NM_KANRI.close();
		db_CH_M_PRC_SCHDL_TEIGI.close();
		// ANK-2248-00-00 DEL START
// OM-2014-0002245 add start
		//db_AC_M_PRC_SVC_KANRI.close();
// OM-2014-0002245 add end
		// ANK-2248-00-00 DEL END
		// ANK-2248-00-00 ADD START
		db_KK_T_SEIOPSVC_KEI.close();
		// ANK-2248-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * ディレイド処理依頼を更新します。
	 * 
	 * @param shoriIraiNo 処理依頼番号
	 * @throws Exception
	 */
	private void shoriIraiUpd(String shoriIraiNo)throws Exception
	{
		
		// ＮＨＫ視聴課金明細のエラー件数を取得
		Object[] whereParam = new Object[] {JACStrConst.NHK_ERR_CD_NORMAL};
		executeAC_T_NHK_WTCHCRG_DTL_AC_SELECT_004(whereParam);
		JBSbatCommonDBInterface dbMap = db_AC_T_NHK_WTCHCRG_DTL.selectNext();
		
		// エラー件数＝０の場合
		if (dbMap != null && dbMap.getBigDecimal("ERR_RECODE_CNT").equals(BigDecimal.ZERO))
		{
			// ディレイド処理依頼更新＜正常＞
			JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, "1", null);
		}else{
			// ディレイド処理依頼更新＜エラー＞
			JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, "2", null);
		}
	}


	/**
	 * エラー情報の出力項目を設定する
	 * @param inMap		入力電文
	 * @param errMsg	エラーコード
	 * @return	JBSbatServiceInterfaceMap	出力電文
	 * @throws Exception
	 */
	// v25.00.00 MOD START
	// private JBSbatServiceInterfaceMap setErrInfoFileMap(JBSbatServiceInterfaceMap inMap, String oytPrcKmkCd,String nhkSikyYYYMM,String nhkSikyYYMM) throws Exception
	private JBSbatServiceInterfaceMap setErrInfoFileMap(JBSbatServiceInterfaceMap inMap, String oytPrcKmkCd,String nhkSikyYYYMM,String nhkSikyYYMM,String oytPrcKmkNm ) throws Exception
	// v25.00.00 MOD END
	{

		JBSbatServiceInterfaceMap retMap = new JBSbatServiceInterfaceMap();

		//エラーコード
		retMap.set(JBSbatACIFM097.RSLT_NYO_CD, ichjikinErrCd[0]);

		//エラー内容
		retMap.set(JBSbatACIFM097.RSLT_NYO, ichjikinErr[0]);

		//処理日
		retMap.set(JBSbatACIFM097.TRN_YMD, JPCUtilCommon.formatDate(super.opeDate));

		//請求先番号
		retMap.set(JBSbatACIFM097.SEIKY_KEI_NO, inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.SEIKY_KEI_NO));

		//請求先カナ名
		retMap.set(JBSbatACIFM097.SIKYS_KANA, JACStrConst.KARA_MOJI);

		//サービス契約番号
		retMap.set(JBSbatACIFM097.SVC_KEI_NO, inMap.getString(JBSbatAC_T_NHK_WTCHCRG_DTL.SVC_KEI_NO));

		//サービス詳細識別番号
		retMap.set(JBSbatACIFM097.SVC_DTL_SKBT_NO, JACStrConst.KARA_MOJI);

		//請求年月
		// 日付をData型へ変換
		DateFormat formatYYMM = new SimpleDateFormat("yyMM");
		Date sikyEndYm = formatYYMM.parse(nhkSikyYYMM);
		nhkSikyYYYMM = new SimpleDateFormat("yyyyMM").format(sikyEndYm);
		retMap.setString(JBSbatACIFM097.SEIKY_YM, nhkSikyYYYMM);
		
		
		//料金コースコード
		retMap.set(JBSbatACIFM097.PCRS_CD, JACStrConst.KARA_MOJI);

		//料金サービスコード
		retMap.set(JBSbatACIFM097.PRC_SVC_CD, JACStrConst.KARA_MOJI);

		//料金項目コード
		retMap.set(JBSbatACIFM097.PRC_KMK_CD,  oytPrcKmkCd);

		//料金内訳明細
		// v25.00.00 MOD START
		// retMap.set(JBSbatACIFM097.PRC_UW_NM, JACStrConst.KARA_MOJI);
		retMap.set(JBSbatACIFM097.PRC_UW_NM, oytPrcKmkNm);
		// v25.00.00 MOD END

		//請求金額
		retMap.set(JBSbatACIFM097.SIKY_AMNT, inMap.getBigDecimal(JBSbatAC_T_NHK_WTCHCRG_DTL.SIKY_AMNT));

		//投入区分
		retMap.set(JBSbatACIFM097.TONYU_DIV, JACStrConst.KARA_MOJI);


		retMap.setOutFlg(true);

		return retMap;
	}
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	// ANK-2248-00-00 DEL START
	/**
	 * SQLKEY(AC_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求年月
	 *		 	サービス番号
	 *		 	イベントコード
	 *		 	請求年月
	 *		 	システムコード
	 *		 	料金サービス識別コード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
/*	private void executeAC_T_SVKEI_CHIKUSEKI_AC_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
// OM-2014-0002245 del start
//		paramList.setValue(param[2].toString());
//		paramList.setValue(param[3].toString());
// OM-2014-0002245 del end

		// DBアクセスを実行します
// OM-2014-0002245 mod start
//		db_AC_T_SVKEI_CHIKUSEKI.selectBySqlDefine(paramList, AC_T_SVKEI_CHIKUSEKI_AC_SELECT_003);
		db_AC_T_SVKEI_CHIKUSEKI.selectBySqlDefine(paramList, AC_T_SVKEI_CHIKUSEKI_AC_SELECT_013);
// OM-2014-0002245 mod end
	}
*/
	// ANK-2248-00-00 DEL END
	
	// ANK-2248-00-00 ADD START
	/**
	 * SQLKEY(AC_SELECT_014)で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 executeAC_T_SVKEI_CHIKUSEKI_AC_SELECT_014(Object[] param) throws Exception
	{
		super.logPrint.printDebugLog("executeAC_T_SVKEI_CHIKUSEKI_AC_SELECT_014_START");
		
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		
		super.logPrint.printDebugLog("param[0]：" + param[0].toString());
		super.logPrint.printDebugLog("param[1]：" + param[1].toString());
		super.logPrint.printDebugLog("param[2]：" + param[2].toString());
		super.logPrint.printDebugLog("param[3]：" + param[3].toString());
		
		db_AC_T_SVKEI_CHIKUSEKI.selectBySqlDefine(paramList, AC_T_SVKEI_CHIKUSEKI_AC_SELECT_014);
		super.logPrint.printDebugLog("executeAC_T_SVKEI_CHIKUSEKI_AC_SELECT_014_END");
	}
	// ANK-2248-00-00 ADD END

	/**
	 * SQLKEY(AC_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:なし
	 * </pre>
	 * <p>
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeAC_T_NHK_WTCHCRG_TJK_AC_SELECT_001() throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		// DBアクセスを実行します
		db_AC_T_NHK_WTCHCRG_TJK.selectBySqlDefine(paramList, AC_T_NHK_CHRG_JOKYO_AC_SELECT_001);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	外部料金ファイル作成年月日時分秒				OUT_PRC_FILE_SAKSEI_DTM
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	NHK_WTCHCRG_TJK_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeAC_T_NHK_WTCHCRG_TJK_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("OUT_PRC_FILE_SAKSEI_DTM", setParam[0]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("NHK_WTCHCRG_TJK_NO", whereParam[0]);

		// DBアクセスを実行します
		db_AC_T_NHK_WTCHCRG_TJK.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	料金計算取込年月日				PRC_CALC_TRKM_YMD
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	CATV_KNYSHA_CD
	 *		 	NHK_SIKY_YM
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeAC_T_NHK_WTCHCRG_DTL_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("PRC_CALC_TRKM_YMD", setParam[0]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("CATV_KNYSHA_CD", whereParam[0]);
		whereMap.setValue("NHK_SIKY_YM", whereParam[1]);

		// DBアクセスを実行します
		db_AC_T_NHK_WTCHCRG_DTL.updateByPrimaryKeys(whereMap, setMap);
	}
	
	/**
	 * SQLKEY(AC_SELECT_017)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	システムコード
	 *		 	業務機能識別コード
	 *		 	抽出変換コード
	 *		 	料金項目抽出変換適用開始年月日
	 *		 	料金項目抽出変換適用終了年月日
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_M_PRC_KMK_CS_CHGE_AC_SELECT_017(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		// v25.00.00 MOD START
		
//		paramList.setValue(param[0].toString());
//		paramList.setValue(param[1].toString());
//		paramList.setValue(param[2].toString());
//		paramList.setValue(param[3].toString());
//		paramList.setValue(param[4].toString());
//		paramList.setValue(param[5].toString());
		
		paramList.setValue(prcGrpCdEohtv);
		paramList.setValue(JACStrConst.PCRS_CD_SP);
		paramList.setValue(prcSvcCd_Nhk);
		paramList.setValue(JACStrConst.PRC_KMK_NM_SBT_CD_PRC_KMK_NM_RYAK);
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		
		// v25.00.00 MOD END

		// DBアクセスを実行します
		db_CH_M_PRC_KMK_CS_CHGE.selectBySqlDefine(paramList, CH_M_PRC_KMK_CS_CHGE_AC_SELECT_017);
	}

	/**
	 * SQLKEY(AC_SELECT_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 executeAC_T_NHK_WTCHCRG_DTL_AC_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_AC_T_NHK_WTCHCRG_DTL.selectBySqlDefine(paramList, AC_T_NHK_WTCHCRG_DTL_AC_SELECT_004);
	}
	
	private void executeZM_M_CD_NM_KANRI_AC_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());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_AC_SELECT_001);
	}
	
	/**
	 * SQLKEY(AC_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 executeCH_M_PRC_SCHDL_TEIGI_AC_SELECT_013(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CH_M_PRC_SCHDL_TEIGI.selectBySqlDefine(paramList, CH_M_PRC_SCHDL_TEIGI_AC_SELECT_013);
	}
	
	// ANK-2248-00-00 ADD START
	/**
	 * SQLKEY(AC_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	NHK外部連携契約コード
	 *		 	NHK団体一括支払サイクルコード
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SEIOPSVC_KEI_AC_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_SEIOPSVC_KEI.selectBySqlDefine(paramList, KK_T_SEIOPSVC_KEI_AC_SELECT_003);
	}
	// ANK-2248-00-00 ADD END
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * コード名称管理テーブルからコード区分名、コード区分略称を取得する
	 * @param cdSbtCd	コード種別コード
	 * @param cdDiv	コード区分
	 * @return	String[]	0=コード区分名、1=コード区分略称
	 * @throws Exception
	 */
	private String[] getCdNmKanri(String cdSbtCd, String cdDiv) throws Exception
	{
		executeZM_M_CD_NM_KANRI_AC_SELECT_001(new Object[] {cdSbtCd, cdDiv, super.opeDate, super.opeDate});
		JBSbatCommonDBInterface record = db_ZM_M_CD_NM_KANRI.selectNext();
		if (record != null)
		{
			return new String[] {record.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM), 
					record.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_ALI)};
		}
		else
		{
			// コード名称管理テーブルから取得できない場合はエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE,
					new String[] { JBSbatZM_M_CD_NM_KANRI.TABLE_NAME });
		}
	}
	
	/**
	 * 料金スケジュール定義から利用終了日を取得する
	 * @param eveCd	 イベントコード
	 * @return	String[]	0=利用終了日
	 * @throws Exception
	 */
	private String[] getNHKExit() throws Exception
	{
		executeCH_M_PRC_SCHDL_TEIGI_AC_SELECT_013(new Object[] {JACStrConst.EVENT_CD_USE_ENDYMD});
		JBSbatCommonDBInterface record = db_CH_M_PRC_SCHDL_TEIGI.selectNext();
		if (record != null)
		{
			return new String []{record.getString(JBSbatCH_M_PRC_SCHDL_TEIGI.EVENT_YMD)};
		}
		else
		{
			// 料金スケジュール定義テーブルから取得できない場合はエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE,
					new String[] { JBSbatCH_M_PRC_SCHDL_TEIGI.TABLE_NAME });
		}
	}
	
	// ANK-2248-00-00 DEL START
	// OM-2014-0002245 add start
	/**
	 * SQLKEY(AC_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 executeAC_M_PRC_SVC_KANRI_AC_SELECT_005(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());

		// DBアクセスを実行します
		db_AC_M_PRC_SVC_KANRI.selectBySqlDefine(paramList, AC_M_PRC_SVC_KANRI_AC_SELECT_005);
	}
*/
	// ANK-2248-00-00 DEL END
	
	// ANK-2248-00-00 ADD START
	/**
	 * ファイル出力
	 * 
	 * @param file ファイル名
	 * @param arrayList 出力データを格納した配列
	 * @param encode エンコード
	 * @param line 改行コード
	 * @param div 区切文字
	 * @throws Exception
	 */
	private void createSeiopSvcKeiNoInfFile(String file, ArrayList<ArrayList<Object>> arrayList, String encode, String line, String div) throws Exception
	{
		// encodeの形式がSHIFT-JISの場合、MS932に変換
		if (JACStrConst.ENCODE_SJIS.toUpperCase().equals(encode.toUpperCase()))
		{
			encode = JACStrConst.ENCODE_MS932;
		}
		
		// ファイルの生成
		JBSbatBusinessFileUtil fileUtil = JCCBatCommon.createBusinessFileUtil(file, encode, line, div);
		Iterator<ArrayList<Object>> it = arrayList.iterator();
		// データ数分繰り返し
		while (it.hasNext())
		{
			// データを取得
			ArrayList<Object> data = it.next();
			// ファイルに書き込み
			JCCBatCommon.printBusinessFileUtil(fileUtil, data);
		}
		// ファイルを閉じる
		JCCBatCommon.closeBusinessFileUtil(fileUtil);
	}
	// ANK-2248-00-00 ADD END
	
}
