/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCNYuryoUriIfTblCreate
*	ソースファイル名	：JBSbatCNYuryoUriIfTblCreate.java
*	作成者				：富士通　
*	作成日				：2011年09月27日
*＜機能概要＞
*　有料売上情報テーブル作成処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/27   富士通		新規作成
*	v5.00.00	2013/03/29  FJ)泉		【IT1-2013-0000689】文字列結合時のnullチェック追加
*	v6.00.00	2013/12/13  FJ)味岡		【OM-2013-0004997】売上情報取得対象年月日の設定値をコンテンツクレカ課金、コンテンツISP課金スキーマの対象年月日へ修正
*	v54.00.00	2021/08/12  GDC)j.hortilano		【ANK-4069-00-00】EOL対応(バッチ・DBサーバリプレース対応)
*********************************************************************/
package eo.business.service;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCNBatCommon;
import eo.business.util.file.JBSbatCNIFE018;
import eo.common.constant.JCNStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.util.JBSbatAplConst;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCNYuryoUriIfTblCreate extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(お客様)*/
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";

	/** テーブル(コンテンツISP課金)*/
	private static final String D_TBL_NAME_CN_T_CONT_ISP_CHRG = "CN_T_CONT_ISP_CHRG";

	/** テーブル(コンテンツクレカ課金)*/
	private static final String D_TBL_NAME_CN_T_CONT_CRECA_CHRG = "CN_T_CONT_CRECA_CHRG";

	/** テーブル(ジャンル)*/
	private static final String D_TBL_NAME_CN_M_GENRE = "CN_M_GENRE";

	/** テーブル(ワーク売上情報)*/
	private static final String D_TBL_NAME_CN_T_SALES_INFO = "CN_T_SALES_INFO";

	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** SQL定義キー(CN_SELECT_002)*/
	private static final String CK_T_CUST_CN_SELECT_002 = "CN_SELECT_002";

	/** SQL定義キー(CN_SELECT_001)*/
	private static final String CN_T_CONT_ISP_CHRG_CN_SELECT_001 = "CN_SELECT_001";

	/** SQL定義キー(CN_SELECT_001)*/
	private static final String CN_T_CONT_CRECA_CHRG_CN_SELECT_001 = "CN_SELECT_001";

	/** SQL定義キー(CN_SELECT_002)*/
	private static final String CN_M_GENRE_CN_SELECT_002 = "CN_SELECT_002";

	/** SQL定義キー(CN_SELECT_002)*/
	private static final String CN_T_CONT_ISP_CHRG_CN_SELECT_002 = "CN_SELECT_002";

	/** SQL定義キー(CN_SELECT_002)*/
	private static final String CN_T_CONT_CRECA_CHRG_CN_SELECT_002 = "CN_SELECT_002";

	/** SQL定義キー(CN_DELETE_001)*/
	private static final String CN_T_SALES_INFO_CN_DELETE_001 = "CN_DELETE_001";

	/** SQL定義キー(CN_INSERT_001)*/
	private static final String CN_T_SALES_INFO_CN_INSERT_001 = "CN_INSERT_001";

	/** SQL定義キー(CN_SELECT_002)*/
	private static final String ZM_M_CD_NM_KANRI_CN_SELECT_002 = "CN_SELECT_002";

	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;

	/** テーブルアクセスクラス(コンテンツISP課金)*/
	private JBSbatSQLAccess db_CN_T_CONT_ISP_CHRG = null;

	/** テーブルアクセスクラス(コンテンツクレカ課金)*/
	private JBSbatSQLAccess db_CN_T_CONT_CRECA_CHRG = null;

	/** テーブルアクセスクラス(ジャンル)*/
	private JBSbatSQLAccess db_CN_M_GENRE = null;

	/** テーブルアクセスクラス(ワーク売上情報)*/
	private JBSbatSQLAccess db_CN_T_SALES_INFO = null;

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** メッセージキー*/	
	private static final String ECNB0220AI = JPCBatchMessageConstant.ECNB0220AI;
	
	/** メッセージキー*/
	private static final String ECNB0230KE = JPCBatchMessageConstant.ECNB0230KE;
	
	/** メッセージキー*/
	private static final String ECNB0320KE = JPCBatchMessageConstant.ECNB0320KE;
	
	/** メッセージキー*/
	private static final String ECNB0360KE = JPCBatchMessageConstant.ECNB0360KE;
	
	/** メッセージキー*/
	private static final String ECNB0370AI = JPCBatchMessageConstant.ECNB0370AI;
	
	/** メッセージキー*/
	private static final String ECNB0420KE = JPCBatchMessageConstant.ECNB0420KE;
	
	/** 処理名*/
	private static final String S_TRAN_CRE_NM = "有料コンテンツデータ登録:コンテンツクレカ課金:";
	
	/** 処理名*/
	private static final String S_TRAN_ISP_NM = "有料コンテンツデータ登録:コンテンツISP課金:";
	
	/** 処理名*/
	private static final String S_TRAN_GENRE_ID = "ジャンルID";
	
	/** 処理名*/
	private static final String S_TRAN_GENRE_NM = "ジャンル名";
	
	/** キー項目名*/
	private static final String S_KEY_CONT_KEI_NO = "コンテンツ契約番号:";
	
	/** キー項目名*/
	private static final String S_KEY_CD_SBT_CD = "コード種別コード:";
	
	/** INPUTファイル名*/
	private static String strInFileNm = "";
	
	/** OUTPUTファイル名*/
	private static String strOutFileNm = "";
	
	/** ファイル作成日*/
	private static String strFileYmd = "";
	
	/** ファイル通番*/
	private static String strFileSeq = "";
	
	/** システム日付(年月日)*/
	private static String strSysDateYmd = "";
	
	/** コンテンツマスタ存在フラグ(0:外部コンテンツ) */
	private static final String S_CONTMST_FLG_0 = "0";

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// FREEパラメータ取得
		String strFreeParam = commonItem.getFreeItem();
		String[] lines = strFreeParam.split(JCNStrConst.S_PARAM_DELIM);
		if(lines.length != 2)
		{
			throw new JBSbatBusinessException(ECNB0230KE);
		}
		
		// DBアクセスクラスを生成します
		db_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_CN_T_CONT_ISP_CHRG = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_T_CONT_ISP_CHRG);
		db_CN_T_CONT_CRECA_CHRG = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_T_CONT_CRECA_CHRG);
		db_CN_M_GENRE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_M_GENRE);
		db_CN_T_SALES_INFO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_T_SALES_INFO);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		// FREEパラメータ取得
		String strFreeParam = commonItem.getFreeItem();
		if(strFreeParam.length() == 0)
		{
			throw new JBSbatBusinessException(ECNB0230KE);
		}
		// パラメータを区切り文字で分割する
		String[] lines = strFreeParam.split(JCNStrConst.S_PARAM_DELIM);
		// パラメータ取得
		String strFreeParam1 = lines[0];	// コンテンツレプリカ情報更新ファイル
		String strFreeParam2 = lines[1];	// 処理結果ファイル
		
		String strCdSbtGenreId = "";
		String strCdSbtGenreNm = "";
		
		strInFileNm = strFreeParam1;
		strOutFileNm = strFreeParam2;
		
		// 運用日付取得
		strSysDateYmd = commonItem.getOpeDate();
		
		try
		{
			JBSbatCommonDBInterface genreId_dbList = new JBSbatCommonDBInterface();
			JBSbatCommonDBInterface genreId_map = new JBSbatCommonDBInterface();
			genreId_dbList. setValue(JCNStrConst.S_CD01196);												// コード種別コード設定
			genreId_dbList. setValue(JCNStrConst.S_ONE);												// コード区分設定
			executeZM_M_CD_NM_KANRI_CN_SELECT_002(genreId_dbList.getList().toArray());
			genreId_map = db_ZM_M_CD_NM_KANRI.selectNext();
			if(genreId_map == null)
			{
				errMsgOut(commonItem, ECNB0420KE, S_TRAN_GENRE_ID, S_KEY_CD_SBT_CD + JCNStrConst.S_CD01196);
			}
			
			strCdSbtGenreId = genreId_map.getString("CD_DIV_NM");
			
			JBSbatCommonDBInterface genreNm_dbList = new JBSbatCommonDBInterface();
			JBSbatCommonDBInterface genreNm_map = new JBSbatCommonDBInterface();
			genreNm_dbList. setValue(JCNStrConst.S_CD01197);										// コード種別コード設定
			genreNm_dbList. setValue(JCNStrConst.S_ONE);											// コード区分設定
			executeZM_M_CD_NM_KANRI_CN_SELECT_002(genreNm_dbList.getList().toArray());
			genreNm_map = db_ZM_M_CD_NM_KANRI.selectNext();
			if(genreNm_map == null)
			{
				errMsgOut(commonItem, ECNB0420KE, S_TRAN_GENRE_NM, S_KEY_CD_SBT_CD + JCNStrConst.S_CD01196);
			}
			
			strCdSbtGenreNm = genreNm_map.getString("CD_DIV_NM");
			
			// コンテンツレプリカ情報更新ファイル読み込み
			ArrayList<String> contRepFileList = new ArrayList<String>();
			contRepFileList = readFile(strFreeParam1);
			
			// ヘッダー部よりファイル通番取得
			// ファイル通番・ファイル作成日取得
			if(contRepFileList.size() != 0)
			{
				String strContRep[] = contRepFileList.get(0).split(JCNStrConst.S_DELIM_TAB);
				if(JCNStrConst.S_FILECHK_REC_KBN_0.equals(strContRep[0]))
				{
					strFileYmd = strContRep[1];
					strFileSeq = strContRep[2];
				}
			}
			
			int iContReadCnt = 0;				// コンテンツレプリカ情報更新ファイル:課金更新指示情報読込件数
			int iContCreReadCnt = 0;			// コンテンツレプリカ情報更新ファイル:コンテンツクレカ課金レコード読込件数
			int iContIspReadCnt = 0;			// コンテンツレプリカ情報更新ファイル:コンテンツＩＳＰ課金レコード読込件数
			int iSalesInfoInsCnt = 0;			// ワーク売上情報登録件数
			
			for(int i = 0; i < contRepFileList.size(); i++)
			{
				String strContKeiNo = "";		// コンテンツ契約番号格納変数初期化
				String strContKeiNoSeq = "";	// コンテンツ契約番号枝番格納変数初期化
				String strContKeiTeiSeq = "";	// コンテンツ契約訂正通番格納変数初期化
				String strPayWayNo = "";		// 決済方法番号格納変数初期化
				String strGenreId = "";			// ジャンルID格納変数初期化
				String strGenreNm = "";			// ジャンル名称格納変数初期化
				String strSysid = "";			// SYSID格納用変数初期化
				String strMembersbtCd = "";		// 会員種別格納用変数初期化
				String strKeishaTypeECd = "";	// 契約者タイプコード格納用変数初期化
				
				// レコードを取得し、区切り文字で分割する
				String[] strRepFile = contRepFileList.get(i).split(JCNStrConst.S_DELIM_TAB);
				
				// レコード区分が「1」の時にメイン処理を実施
				if(strRepFile[0].equals(JCNStrConst.S_FILECHK_REC_KBN_1))
				{
					// 指示コード「C06」:課金更新指示情報
					if (JCNStrConst.S_SHIJI_CD_C06.equals(strRepFile[1]))
					{
						// 契約番号を取得(レコードを読込む)
						strContKeiNo = strRepFile[2];
						
						strContKeiNoSeq = strRepFile[3];
						
						strContKeiTeiSeq = strRepFile[4];
						
						// 決済方法番号を取得
						strPayWayNo = strRepFile[10];
						
						// SYSIDを取得
						strSysid = strRepFile[6];
						
						iContReadCnt++;
					}
					
					// コンテンツ契約番号保持変数がNULLのとき(登録対象外データ)は以降の処理を行わない
					if (JCNBatCommon.isNotNullCheck(strContKeiNo))
					{
						// ジャンル検索SQL発行用領域作成
						JBSbatCommonDBInterface genre_map = new JBSbatCommonDBInterface(); 
						JBSbatCommonDBInterface genre_dbList = new JBSbatCommonDBInterface();
						
						// 有料売上情報SQL発行用領域作成(コンテンツクレカ課金)
						JBSbatCommonDBInterface share_contcre_map = new JBSbatCommonDBInterface(); 
						JBSbatCommonDBInterface share_contcre_dbList = new JBSbatCommonDBInterface();
						
						// 有料売上情報SQL発行用領域作成(コンテンツISP課金)
						JBSbatCommonDBInterface share_contisp_map = new JBSbatCommonDBInterface(); 
						JBSbatCommonDBInterface share_contisp_dbList = new JBSbatCommonDBInterface();
						
						// ワーク売上情報データ削除SQL発行用領域作成
						JBSbatCommonDBInterface wkSalesDel_dbList = new JBSbatCommonDBInterface();
						
						// ワーク売上情報データ登録SQL発行用領域作成
						JBSbatCommonDBInterface wkSalesCre_dbList = new JBSbatCommonDBInterface();
						
						// お客様SQL発行用領域作成
						JBSbatCommonDBInterface ck_cust_map = new JBSbatCommonDBInterface(); 
						JBSbatCommonDBInterface ck_cust_dbList = new JBSbatCommonDBInterface();
						
						// お客様に対してSQL実行
						ck_cust_dbList. setValue(strSysid);
						ck_cust_dbList. setValue(strSysDateYmd);
						executeCK_T_CUST_CN_SELECT_002(ck_cust_dbList.getList().toArray());
						
						for(ck_cust_map = db_CK_T_CUST.selectNext(); null != ck_cust_map; ck_cust_map = db_CK_T_CUST.selectNext())
						{
							strMembersbtCd = ck_cust_map.getString("MEMBER_SBT_CD");	// 会員種別
							strKeishaTypeECd = ck_cust_map.getString("KEISHA_TYPE_CD");	// 契約者タイプコード
						}
						
						// 決済方法番号「1」:クレカ課金の場合はクレカ課金データを登録
						if (JCNStrConst.S_CONT_PAYWAY_CD_CRE.equals(strPayWayNo))
						{
							// チェック結果がテスト会員(契約者タイプコード3:保守用)の場合は以降の処理を行わない。
							if(!JCNStrConst.KEISHA_TYPE_CD_TEST.equals(strKeishaTypeECd))
							{
								// ジャンル、ジャンル情報検索
								genre_dbList. setValue(strContKeiNo);														// コンテンツ契約番号設定
								executeCN_M_GENRE_CN_SELECT_002(genre_dbList.getList().toArray());
								genre_map = db_CN_M_GENRE.selectNext();
								
								// ジャンルIDが取得できなかった場合はコード名称管理より取得した集計用ジャンルIDを設定
								if(genre_map == null)
								{
									strGenreId = strCdSbtGenreId;
									strGenreNm = strCdSbtGenreNm;
								}
								else
								{
									strGenreId = genre_map.getString("GENRE_ID_CN0051");									// ジャンルID(1件目のみ取得)
									strGenreNm = genre_map.getString("GENRE_NM");											// ジャンル名称(1件目のみ取得)
								}
								// コンテンツクレカ課金より有料売上データ取得
								share_contcre_dbList. setValue(strContKeiNo);												// コンテンツ契約番号設定
								share_contcre_dbList. setValue(strContKeiNoSeq);											// コンテンツ契約番号枝番設定
								share_contcre_dbList. setValue(strContKeiTeiSeq);											// コンテンツ契約訂正通番設定
								share_contcre_dbList. setValue(strSysDateYmd);												// 部品よりシステム日付設定
								executeCN_T_CONT_CRECA_CHRG_CN_SELECT_002(share_contcre_dbList.getList().toArray());
								share_contcre_map = db_CN_T_CONT_CRECA_CHRG.selectNext();
								
								// 有料売上情報が取得できていない場合はエラー終了する。
								if(share_contcre_map != null)
								{
//									errMsgOut(commonItem, ECNB0420KE, S_TRAN_CRE_NM, S_KEY_CONT_KEI_NO + strContKeiNo);
									// 取得した有料売上情報のデータを使用し、ワーク売上情報に登録されているデータを削除する。
									wkSalesDel_dbList. setValue(share_contcre_map.getString("CHRG_TRAN_YMD"));					// 契約処理年月日設定
									wkSalesDel_dbList. setValue(share_contcre_map.getString("CONT_KEI_NO"));					// コンテンツ契約番号設定
									wkSalesDel_dbList. setValue(share_contcre_map.getString("CONT_KEI_NO_SEQ"));				// コンテンツ契約番号枝番
									wkSalesDel_dbList. setValue(share_contcre_map.getString("CONT_KEI_TEISE_SEQ"));				// コンテンツ契約訂正通番
									wkSalesDel_dbList. setValue(JCNStrConst.S_ZERO);											// コンテンツ課金訂正通番("0"固定値)設定
									executeCN_T_SALES_INFO_CN_DELETE_001(wkSalesDel_dbList.getList().toArray());
									
									// 有料売上情報データをワーク売上情報へ登録する。
									wkSalesCre_dbList. setValue(share_contcre_map.getString("CHRG_TRAN_YMD"));					// 売上情報取得対象年月日
									wkSalesCre_dbList. setValue(strContKeiNo);													// コンテンツ契約番号
									wkSalesCre_dbList. setValue(strContKeiNoSeq);												// コンテンツ契約番号枝番
									wkSalesCre_dbList. setValue(strContKeiTeiSeq);												// コンテンツ契約訂正通番
									wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO);											// コンテンツ課金訂正通番
									wkSalesCre_dbList. setValue(strGenreId);													// ジャンルID
									wkSalesCre_dbList. setValue(strGenreNm);													// ジャンル名
									wkSalesCre_dbList. setValue(share_contcre_map.getString("SYSID"));							// SYSID
									
									String contCd = share_contcre_map.getString("CONT_CD");
									String contOutCd = share_contcre_map.getString("CONT_OUT_CD");
									
									// 結合項目のnullチェック(nullの場合は空文字に変更)
									if (!JCNBatCommon.isNotNullCheck(contCd))
									{
										contCd = "";
									}
									if (!JCNBatCommon.isNotNullCheck(contOutCd))
									{
										contOutCd = "";
									}
									
									if(JCNBatCommon.isNotNullCheck(share_contcre_map.getString("CONT_SONZAI_FLG")))
									{
										if(share_contcre_map.getString("CONT_SONZAI_FLG").equals(S_CONTMST_FLG_0))
										{
											// コンテンツマスタ存在フラグが0(外部コンテンツ)の場合は「前0+コンテンツサービスコード+コンテンツ外部コード」
											wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO + share_contcre_map.getString("CONT_SVC_CD")
													+ contOutCd);									// コンテンツ識別コード
										}
										else
										{
											// コンテンツマスタ存在フラグが0以外(内部コンテンツ)の場合は「前0+コンテンツサービスコード+コンテンツコード」
											wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO + share_contcre_map.getString("CONT_SVC_CD")
													+ contCd);										// コンテンツ識別コード
										}
									}
									else
									{
										// コンテンツマスタ存在フラグが0以外(内部コンテンツ)の場合は「前0+コンテンツサービスコード+コンテンツコード」
										wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO + share_contcre_map.getString("CONT_SVC_CD")
												+ contCd);										// コンテンツ識別コード
									}
									wkSalesCre_dbList. setValue(share_contcre_map.getString("CONT_KEI_STA_DTM"));				// コンテンツ契約開始年月日時分秒
									wkSalesCre_dbList. setValue(share_contcre_map.getString("CONT_KEI_END_DTM"));				// コンテンツ契約終了年月日時分秒
									wkSalesCre_dbList. setValue(share_contcre_map.getString("CHRG_TRGT_YM"));					// 課金対象年月
									wkSalesCre_dbList. setValue(strMembersbtCd);												// 会員種別コード
									wkSalesCre_dbList. setValue(share_contcre_map.getString("CONT_NM"));						// コンテンツ名
									wkSalesCre_dbList. setValue(share_contcre_map.getString("CONT_SBT_CD"));					// コンテンツ種別コード
									wkSalesCre_dbList. setValue(share_contcre_map.getString("CONT_KEI_YRYO_MRYO_FLG"));			// コンテンツ契約有料無料フラグ
									wkSalesCre_dbList. setValue(share_contcre_map.getString("CONT_TANKA"));						// コンテンツ単価
									wkSalesCre_dbList. setValue(share_contcre_map.getString("CONT_BUY_CNT"));					// コンテンツ購入数量
									wkSalesCre_dbList. setValue(share_contcre_map.getString("TAX_RT"));							// 税率
									wkSalesCre_dbList. setValue(share_contcre_map.getString("CHRG_AMNT"));						// 課金額
									wkSalesCre_dbList. setValue(share_contcre_map.getString("CHRG_STAT_CD"));					// 課金状態コード
									wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO);											// 売上減額
									wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO);											// 補償費
									wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO);											// コンテンツ課金訂正区分
									wkSalesCre_dbList. setValue(share_contcre_map.getString("PLMIN_DIV"));						// 赤黒区分
	//								wkSalesCre_dbList. setValue(JCNBatCommon.getSysDateTimeStamp());							// 登録年月日時分秒
	//								wkSalesCre_dbList. setValue(commonItem.getBatchUserId());									// 登録オペレータアカウント
	//								wkSalesCre_dbList. setValue(JCNBatCommon.getSysDateTimeStamp());							// 更新年月日時分秒
	//								wkSalesCre_dbList. setValue(commonItem.getBatchUserId());									// 更新オペレータアカウント
									wkSalesCre_dbList. setValue("");															// 削除年月日時分秒
									wkSalesCre_dbList. setValue("");															// 削除オペレータアカウント
	//								wkSalesCre_dbList. setValue(JCNStrConst.S_MK_FLG);											// 無効フラグ
									executeCN_T_SALES_INFO_CN_INSERT_001(wkSalesCre_dbList.getList().toArray());
									iContCreReadCnt++;
									iSalesInfoInsCnt++;
								}
							}
						}
						// 決済方法番号「2」:ＩＳＰ課金の場合はＩＳＰ課金データを登録
						else if(JCNStrConst.S_CONT_PAYWAY_CD_ISP.equals(strPayWayNo))
						{
							// チェック結果がテスト会員(取得結果が0件)の場合は以降の処理を行わない。
							if(!JCNStrConst.KEISHA_TYPE_CD_TEST.equals(strKeishaTypeECd))
							{
								// ジャンル、ジャンル情報検索
								genre_dbList. setValue(strContKeiNo);														// コンテンツ契約番号設定
								executeCN_M_GENRE_CN_SELECT_002(genre_dbList.getList().toArray());
								genre_map = db_CN_M_GENRE.selectNext();
								
								// ジャンルIDが取得できなかった場合はコード名称管理より取得した集計用ジャンルIDを設定
								if(genre_map == null)
								{
									strGenreId = strCdSbtGenreId;
									strGenreNm = strCdSbtGenreNm;
								}
								else
								{
									strGenreId = genre_map.getString("GENRE_ID_CN0051");									// ジャンルID(1件目のみ取得)
									strGenreNm = genre_map.getString("GENRE_NM");											// ジャンル名称(1件目のみ取得)
								}
								// コンテンツISP課金より有料売上データ取得
								share_contisp_dbList. setValue(strContKeiNo);												// コンテンツ契約番号設定
								share_contisp_dbList. setValue(strContKeiNoSeq);											// コンテンツ契約番号枝番設定
								share_contisp_dbList. setValue(strContKeiTeiSeq);											// コンテンツ契約訂正通番設定
								share_contisp_dbList. setValue(strSysDateYmd);			// 部品よりシステム日付設定
								executeCN_T_CONT_ISP_CHRG_CN_SELECT_002(share_contisp_dbList.getList().toArray());
								share_contisp_map = db_CN_T_CONT_ISP_CHRG.selectNext();
								
								// 有料売上情報が取得できていない場合はエラー終了する。
								if(share_contisp_map != null)
								{
//									errMsgOut(commonItem, ECNB0420KE, S_TRAN_ISP_NM, S_KEY_CONT_KEI_NO + strContKeiNo);
									// 取得した有料売上情報のデータを使用し、ワーク売上情報に登録されているデータを削除する。
									wkSalesDel_dbList. setValue(share_contisp_map.getString("CHRG_TRAN_YMD"));					// 契約処理年月日設定
									wkSalesDel_dbList. setValue(share_contisp_map.getString("CONT_KEI_NO"));					// コンテンツ契約番号設定
									wkSalesDel_dbList. setValue(share_contisp_map.getString("CONT_KEI_NO_SEQ"));				// コンテンツ契約番号枝番
									wkSalesDel_dbList. setValue(share_contisp_map.getString("CONT_KEI_TEISE_SEQ"));				// コンテンツ契約訂正通番
									wkSalesDel_dbList. setValue(JCNStrConst.S_ZERO);											// コンテンツ課金訂正通番("0"固定値)設定
									executeCN_T_SALES_INFO_CN_DELETE_001(wkSalesDel_dbList.getList().toArray());
									
									// 有料売上情報データをワーク売上情報へ登録する。
									wkSalesCre_dbList. setValue(share_contisp_map.getString("CHRG_TRAN_YMD"));					// 売上情報取得対象年月日
									wkSalesCre_dbList. setValue(strContKeiNo);													// コンテンツ契約番号
									wkSalesCre_dbList. setValue(strContKeiNoSeq);												// コンテンツ契約番号枝番
									wkSalesCre_dbList. setValue(strContKeiTeiSeq);												// コンテンツ契約訂正通番
									wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO);											// コンテンツ課金訂正通番
									wkSalesCre_dbList. setValue(strGenreId);													// ジャンルID
									wkSalesCre_dbList. setValue(strGenreNm);													// ジャンル名
									wkSalesCre_dbList. setValue(share_contisp_map.getString("SYSID"));							// SYSID
									
									String contCd = share_contisp_map.getString("CONT_CD");
									String contOutCd = share_contisp_map.getString("CONT_OUT_CD");
									
									// 結合項目のnullチェック(nullの場合は空文字に変更)
									if (!JCNBatCommon.isNotNullCheck(contCd))
									{
										contCd = "";
									}
									if (!JCNBatCommon.isNotNullCheck(contOutCd))
									{
										contOutCd = "";
									}
									
									if(JCNBatCommon.isNotNullCheck(share_contisp_map.getString("CONT_SONZAI_FLG")))
									{
										if(share_contisp_map.getString("CONT_SONZAI_FLG").equals(S_CONTMST_FLG_0))
										{
											// コンテンツマスタ存在フラグが0(外部コンテンツ)の場合は「前0+コンテンツサービスコード+コンテンツ外部コード」
											wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO + share_contisp_map.getString("CONT_SVC_CD")
													+ contOutCd);								// コンテンツ識別コード
										}
										else
										{
											// コンテンツマスタ存在フラグが0以外(内部コンテンツ)の場合は「前0+コンテンツサービスコード+コンテンツコード」
											wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO + share_contisp_map.getString("CONT_SVC_CD")
													+ contCd);									// コンテンツ識別コード
										}
									}
									else
									{
										// コンテンツマスタ存在フラグが0以外(内部コンテンツ)の場合は「前0+コンテンツサービスコード+コンテンツコード」
										wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO + share_contisp_map.getString("CONT_SVC_CD")
												+ contCd);										// コンテンツ識別コード
									}
									wkSalesCre_dbList. setValue(share_contisp_map.getString("CONT_KEI_STA_DTM"));				// コンテンツ契約開始年月日時分秒
									wkSalesCre_dbList. setValue(share_contisp_map.getString("CONT_KEI_END_DTM"));				// コンテンツ契約終了年月日時分秒
									wkSalesCre_dbList. setValue(share_contisp_map.getString("CHRG_TRGT_YM"));					// 課金対象年月
									wkSalesCre_dbList. setValue(strMembersbtCd);												// 会員種別コード
									wkSalesCre_dbList. setValue(share_contisp_map.getString("CONT_NM"));						// コンテンツ名
									wkSalesCre_dbList. setValue(share_contisp_map.getString("CONT_SBT_CD"));					// コンテンツ種別コード
									wkSalesCre_dbList. setValue(share_contisp_map.getString("CONT_KEI_YRYO_MRYO_FLG"));			// コンテンツ契約有料無料フラグ
									wkSalesCre_dbList. setValue(share_contisp_map.getString("CONT_TANKA"));						// コンテンツ単価
									wkSalesCre_dbList. setValue(share_contisp_map.getString("CONT_BUY_CNT"));					// コンテンツ購入数量
									wkSalesCre_dbList. setValue(share_contisp_map.getString("TAX_RT"));							// 税率
									wkSalesCre_dbList. setValue(share_contisp_map.getString("CHRG_AMNT"));						// 課金額
									wkSalesCre_dbList. setValue(share_contisp_map.getString("CHRG_STAT_CD"));					// 課金状態コード
									wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO);											// 売上減額
									wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO);											// 補償費
									wkSalesCre_dbList. setValue(JCNStrConst.S_ZERO);											// コンテンツ課金訂正区分
									wkSalesCre_dbList. setValue(share_contisp_map.getString("PLMIN_DIV"));						// 赤黒区分
	//								wkSalesCre_dbList. setValue(JCNBatCommon.getSysDateTimeStamp());							// 登録年月日時分秒
	//								wkSalesCre_dbList. setValue(commonItem.getBatchUserId());									// 登録オペレータアカウント
	//								wkSalesCre_dbList. setValue(JCNBatCommon.getSysDateTimeStamp());							// 更新年月日時分秒
	//								wkSalesCre_dbList. setValue(commonItem.getBatchUserId());									// 更新オペレータアカウント
									wkSalesCre_dbList. setValue("");															// 削除年月日時分秒
									wkSalesCre_dbList. setValue("");															// 削除オペレータアカウント
	//								wkSalesCre_dbList. setValue(JCNStrConst.S_MK_FLG);											// 無効フラグ
									executeCN_T_SALES_INFO_CN_INSERT_001(wkSalesCre_dbList.getList().toArray());
									iContIspReadCnt++;
									iSalesInfoInsCnt++;
								}
							}
						}
					}
				}
			}
			// 処理結果ログ出力
			super.logPrint.printBusinessErrorLog(ECNB0370AI, 
					new String[]{strInFileNm, String.valueOf(iContReadCnt)});							// レプリカ情報更新ファイル:課金更新指示情報読込件数
			super.logPrint.printBusinessErrorLog(ECNB0370AI, 
					new String[]{D_TBL_NAME_CN_T_CONT_CRECA_CHRG, String.valueOf(iContCreReadCnt)});	// レプリカ情報更新ファイル:コンテンツクレカレコード読込件数
			super.logPrint.printBusinessErrorLog(ECNB0370AI, 
					new String[]{D_TBL_NAME_CN_T_CONT_ISP_CHRG, String.valueOf(iContIspReadCnt)});		// レプリカ情報更新ファイル:コンテンツＩＳＰレコード読込件数
			super.logPrint.printBusinessErrorLog(ECNB0220AI, 
					new String[]{D_TBL_NAME_CN_T_SALES_INFO, String.valueOf(iSalesInfoInsCnt)});		// ワーク売上情報(有料売上情報)登録件数
			
			return null;
		}
		catch(SQLException se)
		{
			createResultFile(strOutFileNm, strFileYmd, strFileSeq, JCNStrConst.S_FILECHK_ERR_0101);
			// ANK-4069-00-00 DEL START
			//ArrayList<String> ftpList = new ArrayList<String>();
			//ftpList.add(strOutFileNm);
			//boolean updFlg = JCNBatCommon.putFTP(commonItem, ftpList, JCNStrConst.S_IFID_CONTREP_SEND, new HashMap<String, Object>());
			//if(!updFlg)
			//{
			//	throw new JBSbatBusinessException(ECNB0320KE, new String[] {strOutFileNm});
			//}
			// ANK-4069-00-00 DEL END
			throw se;
		}
		catch(IOException ie)
		{
			createResultFile(strOutFileNm, strFileYmd, strFileSeq, JCNStrConst.S_FILECHK_ERR_0101);
			// ANK-4069-00-00 DEL START
			//ArrayList<String> ftpList = new ArrayList<String>();
			//ftpList.add(strOutFileNm);
			//boolean updFlg = JCNBatCommon.putFTP(commonItem, ftpList, JCNStrConst.S_IFID_CONTREP_SEND, new HashMap<String, Object>());
			//if(!updFlg)
			//{
			//	throw new JBSbatBusinessException(ECNB0320KE, new String[] {strOutFileNm});
			//}
			// ANK-4069-00-00 DEL END
			throw ie;
		}
	
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CN_T_CONT_ISP_CHRG.close();
		db_CN_T_CONT_CRECA_CHRG.close();
		db_CN_M_GENRE.close();
		db_CN_T_SALES_INFO.close();
		db_ZM_M_CD_NM_KANRI.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 executeCN_T_CONT_ISP_CHRG_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());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_CN_T_CONT_ISP_CHRG.selectBySqlDefine(paramList, CN_T_CONT_ISP_CHRG_CN_SELECT_001);
	}

	/**
	 * 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 executeCN_T_CONT_CRECA_CHRG_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());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_CN_T_CONT_CRECA_CHRG.selectBySqlDefine(paramList, CN_T_CONT_CRECA_CHRG_CN_SELECT_001);
	}

	/**
	 * SQLKEY(CN_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	CONT_KEI_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCN_M_GENRE_CN_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CN_M_GENRE.selectBySqlDefine(paramList, CN_M_GENRE_CN_SELECT_002);
	}

	/**
	 * 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_CONT_ISP_CHRG_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());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_CN_T_CONT_ISP_CHRG.selectBySqlDefine(paramList, CN_T_CONT_ISP_CHRG_CN_SELECT_002);
	}

	/**
	 * 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_CONT_CRECA_CHRG_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());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_CN_T_CONT_CRECA_CHRG.selectBySqlDefine(paramList, CN_T_CONT_CRECA_CHRG_CN_SELECT_002);
	}

	/**
	 * SQLKEY(CN_DELETE_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_SALES_INFO_CN_DELETE_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());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_CN_T_SALES_INFO.executeBySqlDefine(paramList, CN_T_SALES_INFO_CN_DELETE_001);
	}

	/**
	 * SQLKEY(CN_INSERT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	売上情報取得対象年月日
	 *		 	コンテンツ契約番号
	 *		 	コンテンツ契約番号枝番
	 *		 	コンテンツ契約訂正通番
	 *		 	コンテンツ課金訂正通番
	 *		 	ジャンルID
	 *		 	ジャンル名
	 *		 	SYSID
	 *		 	コンテンツ識別コード
	 *		 	コンテンツ契約開始年月日時分秒
	 *		 	コンテンツ契約終了年月日時分秒
	 *		 	課金対象年月
	 *		 	会員種別コード
	 *		 	コンテンツ名
	 *		 	コンテンツ種別コード
	 *		 	コンテンツ契約有料無料フラグ
	 *		 	コンテンツ単価
	 *		 	コンテンツ購入数量
	 *		 	税率
	 *		 	課金額
	 *		 	課金状態コード
	 *		 	売上減額
	 *		 	補償費
	 *		 	コンテンツ課金識別区分
	 *		 	赤黒区分
	 *		 	登録年月日時分秒
	 *		 	更新年月日時分秒
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCN_T_SALES_INFO_CN_INSERT_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());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
		paramList.setValue(param[9].toString());
		paramList.setValue(param[10].toString());
		paramList.setValue(param[11].toString());
		paramList.setValue(param[12].toString());
		paramList.setValue(param[13].toString());
		paramList.setValue(param[14].toString());
		paramList.setValue(param[15].toString());
		paramList.setValue(param[16].toString());
		paramList.setValue(param[17].toString());
		paramList.setValue(param[18].toString());
		paramList.setValue(param[19].toString());
		paramList.setValue(param[20].toString());
		paramList.setValue(param[21].toString());
		paramList.setValue(param[22].toString());
		paramList.setValue(param[23].toString());
		paramList.setValue(param[24].toString());
		paramList.setValue(param[25].toString());
		paramList.setValue(param[26].toString());

		// DBアクセスを実行します
		db_CN_T_SALES_INFO.executeBySqlDefine(paramList, CN_T_SALES_INFO_CN_INSERT_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 executeZM_M_CD_NM_KANRI_CN_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_CN_SELECT_002);
	}

	/**
	 * SQLKEY(CN_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SYSID
	 *			SEND_CNT
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_CN_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_CN_SELECT_002);
	}

	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * ファイルレコードチェック結果判定を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数にてメッセージID、処理中の件数、項目名を設定します。<br>
	 *
	 * 2.引数を元にエラーログの出力を行います。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param commonItem 共通電文
	 * @param strMsgId   メッセージID
	 * @param strTranNm  処理名称
	 * @param strKey     読込レコードのキー
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	private static void errMsgOut(JBSbatCommonItem commonItem, String strMsgId, String strTranNm, String strKey) throws Exception
	{
		if(ECNB0360KE.equals(strMsgId))
		{
			createResultFile(strOutFileNm, strFileYmd, strFileSeq, JCNStrConst.S_FILECHK_ERR_0101);
			// ANK-4069-00-00 DEL START
			//// FTP配信処理
			//ArrayList<String> ftpList = new ArrayList<String>();
			//ftpList.add(strOutFileNm);
			//boolean updFlg = JCNBatCommon.putFTP(commonItem, ftpList, JCNStrConst.S_IFID_CONTREP_SEND, new HashMap<String, Object>());
			//if(!updFlg)
			//{
			//	throw new JBSbatBusinessException(ECNB0320KE, new String[] {strOutFileNm});
			//}
			// ANK-4069-00-00 DEL END
			throw new JBSbatBusinessException(ECNB0420KE, new String[] {strTranNm, strKey});
		}
		
		if(ECNB0420KE.equals(strMsgId))
		{
			createResultFile(strOutFileNm, strFileYmd, strFileSeq, JCNStrConst.S_FILECHK_ERR_0101);
			// ANK-4069-00-00 DEL START
			//// FTP配信処理
			//ArrayList<String> ftpList = new ArrayList<String>();
			//ftpList.add(strOutFileNm);
			//boolean updFlg = JCNBatCommon.putFTP(commonItem, ftpList, JCNStrConst.S_IFID_CONTREP_SEND, new HashMap<String, Object>());
			//if(!updFlg)
			//{
			//	throw new JBSbatBusinessException(ECNB0320KE, new String[] {strOutFileNm});
			//}
			// ANK-4069-00-00 DEL END
			throw new JBSbatBusinessException(ECNB0420KE, new String[] {strTranNm, strKey});
		}
		return;
	}
	
	/**
	 * 処理結果ファイルの出力を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で出力ファイル名(フルパス)を設定します。<br>
	 *
	 * 2.引数をもとに処理結果ファイル(異常)を出力します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param strFilePass    ファイル名。
	 * @param strMakeYmd     ファイル作成日。
	 * @param strFileFSeq    ファイル通番。
	 * @param strResultCd    エラーコード。
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	private static void createResultFile(String strFilePass, String strMakeYmd, String strFileFSeq, String strResultCd) throws Exception
	{
		// 外部出力ファイルパス
		JBSbatOutputFileUtil outFile = new JBSbatOutputFileUtil(strFilePass);
		
		outFile.setEncode(JCNStrConst.SJIS);				// 文字コード
		outFile.setLine(JCNStrConst.S_LINE_SEPARAOR_LF);	// 改行コード
		// 空ファイルを生成
		outFile.createWriter();
		// 項目を設定
		JBSbatServiceInterfaceMap outTnmtDataMap1 = new JBSbatServiceInterfaceMap();
		outTnmtDataMap1.set(JBSbatCNIFE018.REC_KBN, JCNStrConst.S_FILECHK_REC_KBN_0);
		outTnmtDataMap1.set(JBSbatCNIFE018.FILE_CREATE_DATE, strMakeYmd);
		outTnmtDataMap1.set(JBSbatCNIFE018.FILE_SEQ, strFileFSeq);
		outTnmtDataMap1.set(JBSbatCNIFE018.RESULT_CD, strResultCd);
		
		try
		{
			// 出力対象DEFファイルその1
			String defFile1 = JBSbatAplConst.getAplConstValue(JCNStrConst.S_CN_DEF_DIR)
								+ JCNStrConst.S_CONT_SVC_REP_DEF;								// ファイル定義フルパス
			JBSbatDefFileUtil defTnmtUtil1 = new JBSbatDefFileUtil(defFile1, outFile);
			outFile.print(outTnmtDataMap1, defTnmtUtil1);
			
		}
		catch (IOException ie)
		{
			throw ie;
		}
		finally
		{
			outFile.close();
		}
	}
	
	/**
	 * ファイル読み込み処理を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で読込ファイルディレクトリ(フルパス)を設定します。<br>
	 *
	 * 2.引数を元にファイル読込を行い、行をListへ格納します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param strFileDir    出力ディレクトリ(フルパス)。
	 * @return resultList   返却用List
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	private static ArrayList<String> readFile(String strFileDir) throws Exception
	{
		ArrayList<String> resultList = new  ArrayList<String>();
		
		// 外部出力ファイルパス
		JBSbatInputFileUtil inFile = new JBSbatInputFileUtil(strFileDir);
		inFile.setEncode(JCNStrConst.SJIS);						// 文字コード
		inFile.setLine(JCNStrConst.S_LINE_SEPARAOR_LF);			// 改行コード
		inFile.createReader();
		
		try
		{
			while(true)
			{
				String line = inFile.readLine();
				if(line == null)
				{
					inFile.close();
					break;
				}
				resultList.add(line);
			}
			
			return resultList;
		}
		catch (IOException e)
		{
			throw e;
		}
		finally
		{
			inFile.close();
		}
	}
}
