/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKEonetNGCnclListSksi
*	ソースファイル名	：JBSbatKKEonetNGCnclListSksi.java
*	作成者				：富士通　
*	作成日				：2017年10月02日
*＜機能概要＞
*　ｅｏ電気ネットＮＧ・キャンセル対象リスト作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v34.00.00	2017/10/02   FJ)周藤	ANK-3210-00-00  【eo電気】電気単独対応（STEP3）新規作成
*	v34.00.01	2017/10/26   FJ)周藤    IT1-2017-0000128【eo電気】電気単独対応（STEP3） IT障害対応
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.table.JBSbatKK_T_MSKM;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKEonetNGCnclListSksi extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(電子ファイル管理)*/
	private static final String D_TBL_NAME_CC_T_EFILE_KANRI = "CC_T_EFILE_KANRI";

	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";

	/** SQL定義キー(KK_SELECT_341)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_341 = "KK_SELECT_341";

	/** SQL定義キー(KK_SELECT_342)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_342 = "KK_SELECT_342";

	/** SQL定義キー(KK_SELECT_004)*/
	private static final String ZM_M_CD_NM_KANRI_KK_SELECT_004 = "KK_SELECT_004";

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;

	/** テーブルアクセスクラス(電子ファイル管理)*/
	private JBSbatSQLAccess db_CC_T_EFILE_KANRI = null;

	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** ｅｏ光キャンセル理由：中止(1) */
	private static final String EOH_CNCL_RSN_STP = "1";

	/** ｅｏ光キャンセル理由：宅調ＮＧ(2) */
	private static final String EOH_CNCL_RSN_TAKCHO_NG = "2";

	/** ｅｏ光キャンセル理由：ルートＮＧ(3) */
	private static final String EOH_CNCL_RSN_ROOT_NG = "3";

	/** 設計結果コード：基準外(2) */
	private static final String SKKK_CD_KIJUNGAI = "2";

	/** 宅内調査判定コード：NG(2) */
	private static final String TAKCHO_JUDGE_CD_NG = "2";

	/** eo光ｷｬﾝｾﾙ種類名称：ルートＮＧ */
	private static final String ROOT_NG = "ルートＮＧ";
	
	/** eo光ｷｬﾝｾﾙ種類名称：宅調ＮＧ */
	private static final String TAKCHO_NG = "宅調ＮＧ";
	
	/** コード名称管理.コード種別コード（工事案件中止理由コード） */
	private static final String CD_SBT_CD_KOJIAK_STP_RSN_CD = "CD01454";
	
	/** コード名称管理.コード種別コード（工事案件中止理由詳細コード） */
	private static final String CD_SBT_CD_KOJIAK_STP_RSN_DTL_CD = "CD01455";
	
	/** コード名称管理.コード種別コード（サービス契約ステータス） */
	private static final String CD_SBT_CD_SVC_KEI_STAT = "CD00037";
	
	/** SQL定義キー(KK_INSERT_001)*/
	private static final String ZM_T_DL_FILE_KANRI_KK_INSERT_001 = "KK_INSERT_001";
	
	/** ファイルコード */
	private static final String FILE_CD = "0000";
	
	/** 処理管理番号 */
	private static final String TRN_KANRI_NO = "000000000172";

	/** ファイル名編集用 */
	private static final String FILE_NM = "ｅｏ電気ネットＮＧ・キャンセル対象リスト_";
	
	/** ｅｏ電気ネットＮＧ・キャンセル工事案件ファイルファイルパス */
	private String kkifm764FilePath = null;
	
	/** ｅｏ電気ネットＮＧ・キャンセル対象リストファイルパス */
	private String kkifm765FilePath = null;
	
	/** ｅｏ電気ネットＮＧ・キャンセル対象リスト保持用配列 */
	private HashMap<String, String> kkifm765Map = null;

	/** ｅｏ電気ネットＮＧ・キャンセル対象リストファイルオブジェクト */
	private JBSbatBusinessFileUtil kkifm765FileObj = null;

	/** コード名称管理（工事案件中止理由コード）格納マップ */
	private HashMap<String, String> cdNmKojiakStpRsnCdMap = null;
	
	/** コード名称管理（工事案件中止理由詳細コード）格納マップ */
	private HashMap<String, String> cdNmKojiakStpRsnDtlCdMap = null;
	
	/** コード名称管理（サービス契約ステータスコード）格納マップ */
	private HashMap<String, String> cdNmSvcKeiStatMap = null;
	
	/** ファイル出力件数 */
	private int outCount = 0;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_CC_T_EFILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_EFILE_KANRI);
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	
	String[] freeItems = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);
	
	// ｅｏ電気ネットＮＧ・キャンセル工事案件ファイルファイルパス
	kkifm764FilePath = freeItems[0];
	
	// ｅｏ電気ネットＮＧ・キャンセル対象リストファイルパス
	kkifm765FilePath = freeItems[1];
	
	}
	
	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		
		// ｅｏ電気ネットＮＧ・キャンセル対象リストファイルオブジェクト
		kkifm765FileObj = JKKBatCommon.createBusinessFileUtil(kkifm765FilePath,
			JKKBatConst.SJIS, JKKStrConst.LINE_SEPARATOR, JKKBatConst.S_SEP_CAM);
		
		// コード名称管理マスタ(工事案件中止理由コード)取得
		cdNmKojiakStpRsnCdMap = getCdNmKanri(CD_SBT_CD_KOJIAK_STP_RSN_CD);
		
		// コード名称管理マスタ(工事案件中止理由詳細コード)取得
		cdNmKojiakStpRsnDtlCdMap = getCdNmKanri(CD_SBT_CD_KOJIAK_STP_RSN_DTL_CD);
		
		// コード名称管理マスタ(サービス契約ステータス)取得
		cdNmSvcKeiStatMap = getCdNmKanri(CD_SBT_CD_SVC_KEI_STAT);
		
		// ｅｏ電気ネットＮＧ・キャンセル工事案件ファイルの件数分を繰返す
		BufferedReader br = null;
		try
		{
			InputStreamReader is = new InputStreamReader(new FileInputStream(kkifm764FilePath), JKKStrConst.ENCODE_SJIS);
			br = new BufferedReader(is);
			
			// ヘッダ出力
			writeHeader();
			
			while (br.ready())
			{
				kkifm765Map = new HashMap<String, String>();
				
				// 1行読込み
				String data = br.readLine();
				
				// ｅｏ電気ネットＮＧ・キャンセル工事案件配列（カンマ区切り） */
				String[] ngCancelKojiakSplitComma = null;
				
				// 入力データをカンマで区切り、配列に設定
				ngCancelKojiakSplitComma = data.split(JKKStrConst.KDDI_CONMA, -1);
				
				// 入力データが0件の場合、以下の処理を実行しない
				if (JKKStringUtil.isNullEmpty(ngCancelKojiakSplitComma))
				{
					continue;
				}
				
				// ｅｏ電気ネットＮＧ・キャンセル工事案件配列 */
				ArrayList<String> ngCancelKojiakSplit = new ArrayList<String>();

				// カンマで区切ったデータのダブルクォーテーションを削除
				for (int i = 0; i < ngCancelKojiakSplitComma.length; i++)
				{
					ngCancelKojiakSplit.add(ngCancelKojiakSplitComma[i].substring(1, ngCancelKojiakSplitComma[i].length() - 1));
				}
				
				// (マンション工事案件状態コード、または、工事案件ステータスが「中止：900」以外)かつ、
				// (設計結果コードが「基準外：2」、または宅内調査判定コードが「NG：2」)以外の場合、出力対象外となるため処理を飛ばす。
				
				if (!(JKKStrConst.CD00474_900.equals(ngCancelKojiakSplit.get(1)) ||
//IT1-2017-0000128 MOD START
//						JKKStrConst.CD00474_900.equals(ngCancelKojiakSplit.get(1))) && 
						JKKStrConst.CD00474_900.equals(ngCancelKojiakSplit.get(9))) && 
//IT1-2017-0000128 MOD START
						!(TAKCHO_JUDGE_CD_NG.equals(ngCancelKojiakSplit.get(5)) ||
							SKKK_CD_KIJUNGAI.equals(ngCancelKojiakSplit.get(6))))
				{
					continue;
				}
				// ファイル作成用に以下のデータを保持する。
				// 工事案件番号
				kkifm765Map.put("kojiakNo", ngCancelKojiakSplit.get(0));
				// 工事案件ステータス
				kkifm765Map.put("kojiakStat",ngCancelKojiakSplit.get(1));
				// 最終応答結果コード変更年月日
				kkifm765Map.put("lastRspRsltCdChgYmd",ngCancelKojiakSplit.get(4));
				// 宅内調査判定コード
				kkifm765Map.put("takchoJudgeCd",ngCancelKojiakSplit.get(5));
				// 設計結果コード
				kkifm765Map.put("skkkCd",ngCancelKojiakSplit.get(6));
				// 工事案件中止理由コード1
				kkifm765Map.put("kojiakStpRsnCd1",ngCancelKojiakSplit.get(7));
				// 工事案件中止理由コード2
				kkifm765Map.put("kojiakStpRsnCd2",ngCancelKojiakSplit.get(8));
				// マンション工事案件状態コード
				kkifm765Map.put("mansKojiak_statCd",ngCancelKojiakSplit.get(9));

				// 連携サービス契約番号
				String renkeiSvcKeiNo = ngCancelKojiakSplit.get(2);
				// 工事案件番号
				String kojiakNo = ngCancelKojiakSplit.get(0);
				
				// 連携サービス契約番号と一致するサービス契約グループ設定と同一利用場所の
				// eo電気契約の契約ステータスと申込年月日を取得する。
				executeKK_T_SVC_KEI_KK_SELECT_341(new Object[] {
						renkeiSvcKeiNo, kojiakNo, super.opeDate, super.opeDate});
				
				// レコードを取得する
				JBSbatCommonDBInterface svcKeiEoDMap = db_KK_T_SVC_KEI.selectNext();
				if(svcKeiEoDMap == null){
					// レコードが取得できない場合、以下の処理を飛ばす。
					continue;
				}
				// ｅｏ電気から下記データを取得
				// サービス契約番号(ｅｏ電気)
				kkifm765Map.put("eoeSvcKeiNo",svcKeiEoDMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
				// 申込日年月日(ｅｏ電気)
				kkifm765Map.put("eoeMskmYmd",svcKeiEoDMap.getString(JBSbatKK_T_MSKM.MSKM_YMD));
				// サービス契約ステータスコード(ｅｏ電気)
				kkifm765Map.put("eoeSvcKeiStat",svcKeiEoDMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT));
				 
				// 連携サービス契約番号と一致するサービス契約のeo光ネット契約の契約ステータスと申込年月日を取得する。
				executeKK_T_SVC_KEI_KK_SELECT_342(new Object[] {
						renkeiSvcKeiNo, kojiakNo, super.opeDate});
				
				// レコードを取得する
				JBSbatCommonDBInterface svcKeiEoHMap = db_KK_T_SVC_KEI.selectNext();
				if(svcKeiEoHMap == null){
					// レコードが取得できない場合、以下の処理を飛ばす。
					continue;
				}
				// ｅｏ光ネットから下記データを取得
				// サービス契約番号(ｅｏネット)
				kkifm765Map.put("eohSvcKeiNo",svcKeiEoHMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
				// 申込日年月日(ｅｏネット)
				kkifm765Map.put("eohMskmYmd",svcKeiEoHMap.getString(JBSbatKK_T_MSKM.MSKM_YMD));
				// サービス契約ステータスコード(ｅｏネット)
				kkifm765Map.put("eohSvcKeiStat",svcKeiEoHMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT));

				// ｅｏ電気支払申込書個別発送対象リストファイルを出力する
				createKkifm765(kkifm765Map);
			}
		}
		catch (IOException e)
		{
			// ｅｏ電気ネットＮＧ・キャンセル工事案件ファイルがない場合０件と同様とする
			super.logPrint.printDebugLog("ｅｏ電気ネットＮＧ・キャンセル工事案件ファイルなし");
		}
		finally
		{
			if (null != br)
			{
				br.close();
			}
		}
		
		// ファイルを閉じる
		JCCBatCommon.closeBusinessFileUtil(kkifm765FileObj);
		
		// 電子ファイル管理登録処理
		JBSbatCommonItem arg0 = super.commonItem;					// 業務共通電文
		String arg1 = FILE_CD;										// ファイルコード
		String arg2 = kkifm765FilePath;								// ファイルパス
		String arg3 = JBSbatDateUtil.adjustMonth(super.opeDate, 1);	// ファイル削除年月日（運用日付 + 1ヶ月）
		String[] rc = JCCBatCommon.createDenshiFile(arg0, arg1, arg2, arg3);
		
		// ログ出力
		super.logPrint.printDebugLog("電子ファイル管理番号(" + rc[0] +  ")、世代登録年月日時分秒(" + rc[1] + ")");
		
		// ダウンロードファイル管理登録処理
		executeZM_T_DL_FILE_KANRI_KK_INSERT_001(getDlFileInsertParam(rc, arg3));
		
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_SVC_KEI.close();
		db_ZM_M_CD_NM_KANRI.close();
		db_CC_T_EFILE_KANRI.close();
		db_ZM_T_DL_FILE_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_341)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SVC0000000
	 *		 	0123456789
	 *		 	20171001
	 *		 	20171001
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_341(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_341);
	}

	/**
	 * SQLKEY(KK_SELECT_342)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SVC0000000
	 *		 	01223456789
	 *		 	20171001
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_342(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_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_342);
	}

	/**
	 * SQLKEY(KK_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	コード種別コード
	 *		 	コード適用開始年月日
	 *		 	コード適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_CD_NM_KANRI_KK_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_KK_SELECT_004);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	電子ファイル管理番号				EFILE_KANRI_NO
	 *		 	世代登録年月日時分秒				GENE_ADD_DTM
	 *		 	システムコード				SYS_CD
	 *		 	ファイルコード				FILE_CD
	 *		 	電子ファイル				EFILE
	 *		 	物理ファイル名				BUTSURI_FILE_NM
	 *		 	ファイルサイズ				FILE_SIZE
	 *		 	圧縮ファイルサイズ				ASSHUKU_FILE_SIZE
	 *		 	ファイル削除年月日				FILE_DEL_YMD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCC_T_EFILE_KANRI_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("EFILE_KANRI_NO", setParam[0]);
		setMap.setValue("GENE_ADD_DTM", setParam[1]);
		setMap.setValue("SYS_CD", setParam[2]);
		setMap.setValue("FILE_CD", setParam[3]);
		setMap.setValue("EFILE", setParam[4]);
		setMap.setValue("BUTSURI_FILE_NM", setParam[5]);
		setMap.setValue("FILE_SIZE", setParam[6]);
		setMap.setValue("ASSHUKU_FILE_SIZE", setParam[7]);
		setMap.setValue("FILE_DEL_YMD", setParam[8]);
		setMap.setValue("ADD_DTM", setParam[9]);
		setMap.setValue("ADD_OPEACNT", setParam[10]);
		setMap.setValue("UPD_DTM", setParam[11]);
		setMap.setValue("UPD_OPEACNT", setParam[12]);
		setMap.setValue("DEL_DTM", setParam[13]);
		setMap.setValue("DEL_OPEACNT", setParam[14]);
		setMap.setValue("MK_FLG", setParam[15]);
		setMap.setValue("ADD_UNYO_YMD", setParam[16]);
		setMap.setValue("ADD_TRN_ID", setParam[17]);
		setMap.setValue("UPD_UNYO_YMD", setParam[18]);
		setMap.setValue("UPD_TRN_ID", setParam[19]);
		setMap.setValue("DEL_UNYO_YMD", setParam[20]);
		setMap.setValue("DEL_TRN_ID", setParam[21]);
	
		// DBアクセスを実行します
		db_CC_T_EFILE_KANRI.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	ファイル番号				FILE_NO
	 *		 	処理管理番号				TRN_KANRI_NO
	 *		 	電子ファイル管理番号				EFILE_KANRI_NO
	 *		 	ファイル名				FILE_NM
	 *		 	ファイルサイズ				FILE_SIZE
	 *		 	データ件数				DATA_CNT
	 *		 	ファイル登録年月日時分秒				FILE_ADD_DTM
	 *		 	ファイル削除年月日				FILE_DEL_YMD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_T_DL_FILE_KANRI_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("FILE_NO", setParam[0]);
		setMap.setValue("TRN_KANRI_NO", setParam[1]);
		setMap.setValue("EFILE_KANRI_NO", setParam[2]);
		setMap.setValue("FILE_NM", setParam[3]);
		setMap.setValue("FILE_SIZE", setParam[4]);
		setMap.setValue("DATA_CNT", setParam[5]);
		setMap.setValue("FILE_ADD_DTM", setParam[6]);
		setMap.setValue("FILE_DEL_YMD", setParam[7]);
		setMap.setValue("ADD_DTM", setParam[8]);
		setMap.setValue("ADD_OPEACNT", setParam[9]);
		setMap.setValue("UPD_DTM", setParam[10]);
		setMap.setValue("UPD_OPEACNT", setParam[11]);
		setMap.setValue("DEL_DTM", setParam[12]);
		setMap.setValue("DEL_OPEACNT", setParam[13]);
		setMap.setValue("MK_FLG", setParam[14]);
	
		// DBアクセスを実行します
		db_ZM_T_DL_FILE_KANRI.insertByPrimaryKeys(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * コード名称管理より該当のコード種別のコードを取得します。
	 * <br>
	 * @param cdSbtCd コード種別コード
	 * @return HashMap：コード内容
	 * @throws Exception 
	 */
	private HashMap<String, String> getCdNmKanri(String cdSbtCd) throws Exception {
		
		HashMap<String, String> hmCdNmKanri = new HashMap<String, String>();

		Object[] prm = new Object[]{cdSbtCd, super.opeDate, super.opeDate};
		executeZM_M_CD_NM_KANRI_KK_SELECT_004(prm);
		
		// 取得したコード名称管理の内容をハッシュテーブルに格納する
		JBSbatCommonDBInterface adchgMap = null;
		while ( (adchgMap = db_ZM_M_CD_NM_KANRI.selectNext() ) != null )
		{
			hmCdNmKanri.put(adchgMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV), 
				JBSbatStringUtil.Rtrim(adchgMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM)));
		}
		
		return hmCdNmKanri;
	}
	
	/**
	 * コード種別ハッシュテーブルより名称を取得します。
	 * <br>
	 * @param hmCdNmKanri コード内容
	 * @param cdDiv コード区分
	 * @return cdDivNm コード区分名
	 * @throws Exception 
	 */
	private String getCdDivNm(HashMap<String, String> hmCdNmKanri, String cdDiv) throws Exception {
		// コード区分名
		String cdDivNm = hmCdNmKanri.get(cdDiv);
		
		if (cdDivNm == null){
			cdDivNm = "";
		}
		
		return cdDivNm;
	}
	
	/**
	 * ｅｏ電気ネットＮＧ・キャンセル対象リストのヘッダを出力する。
	 * @param listSbt リスト種別
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void writeHeader() throws Exception
	{
		ArrayList<String> outputList = new ArrayList<String>();
		
		outputList.add("eo電気お客さまID");
		outputList.add("eo電気申込日");
		outputList.add("eo電気ステータス");
		outputList.add("eo光お客さまID");
		outputList.add("eo光申込日");
		outputList.add("eo光契約ｽﾃｰﾀｽ(eo顧客)");
		outputList.add("eo光申込番号");
		outputList.add("eo光ｷｬﾝｾﾙ種類");
		outputList.add("eo光ｷｬﾝｾﾙ理由ｷｬﾝｾﾙ大分類");
		outputList.add("eo光ｷｬﾝｾﾙ理由ｷｬﾝｾﾙ中分類");
		outputList.add("eo光NG・ｷｬﾝｾﾙ確定日");

		JKKBatCommon.printDoubleQuoteBusinessFileUtil(kkifm765FileObj, outputList);
	}
	
	/**
	 * ｅｏ電気ネットＮＧ・キャンセル対象リストのデータ部を出力する。
	 * @param strList 出力対象データ
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void createKkifm765(HashMap<String,String> dataMap) throws Exception
	{
		ArrayList<String> outputList = new ArrayList<String>();
		
		// ｅｏ光キャンセル理由を判別し、判別コードの値を以下として保持する。
		// 中止 = 1
		// 宅調ＮＧ = 2
		// ルートＮＧ = 3
		String cancelRsn = "";
		if(JKKStrConst.CD00474_900.equals(dataMap.get("kojiakStat")) ||
				JKKStrConst.CD00474_900.equals(dataMap.get("mansKojiak_statCd")))
		{
			cancelRsn = EOH_CNCL_RSN_STP;
		}
		else if(SKKK_CD_KIJUNGAI.equals(dataMap.get("skkkCd")))
		{
			cancelRsn = EOH_CNCL_RSN_ROOT_NG;
		}
		else if(TAKCHO_JUDGE_CD_NG.equals(dataMap.get("takchoJudgeCd")))
		{
			cancelRsn = EOH_CNCL_RSN_TAKCHO_NG;
		}
		
		// ｅｏ電気お客さまＩＤ
		String eoeleSvcKeiNo = dataMap.get("eoeSvcKeiNo");
		// ｅｏ電気申込日
		String eoeleMskmYmd = dataMap.get("eoeMskmYmd");
		// ｅｏ電気契約ステータス
		String eoeleStat = getCdDivNm(cdNmSvcKeiStatMap, dataMap.get("eoeSvcKeiStat"));
		// ｅｏ光お客さまＩＤ
		String eonetSvcKeiNo = dataMap.get("eohSvcKeiNo");
		// ｅｏ光申込日
		String eonetMskmYmd = dataMap.get("eohMskmYmd");
		// ｅｏ光契約ｽﾃｰﾀｽ(ｅｏ顧客)
		String eonetStat = getCdDivNm(cdNmSvcKeiStatMap, dataMap.get("eohSvcKeiStat"));
		// ｅｏ光申込番号
		String eonetMskmNo = dataMap.get("kojiakNo");
		
		// ｅｏ光キャンセル種類
		String eonetCancelSbt = "";
		// ｅｏ光キャンセル理由キャンセル大分類
		String eonetCancelRsnDbri = "";
		// ｅｏ光キャンセル理由キャンセル中分類
		String eonetCancelRsnCbri = "";
		
		// 中止の場合
		if (EOH_CNCL_RSN_STP.equals(cancelRsn))
		{
			eonetCancelRsnDbri = getCdDivNm(cdNmKojiakStpRsnCdMap, dataMap.get("kojiakStpRsnCd1"));
			eonetCancelRsnCbri = getCdDivNm(cdNmKojiakStpRsnDtlCdMap, dataMap.get("kojiakStpRsnCd2"));
		}
		// 宅調ＮＧの場合
		else if (EOH_CNCL_RSN_TAKCHO_NG.equals(cancelRsn))
		{
			eonetCancelSbt = TAKCHO_NG;
		}
		// ルートＮＧの場合
		else if (EOH_CNCL_RSN_ROOT_NG.equals(cancelRsn))
		{
			eonetCancelSbt = ROOT_NG;
		}
		
		// ｅｏ光ＮＧ・キャンセル確定日
		String eonetCancelNgYmd = dataMap.get("lastRspRsltCdChgYmd");

		outputList.add(eoeleSvcKeiNo);			// ｅｏ電気お客さまＩＤ
		outputList.add(eoeleMskmYmd);			// ｅｏ電気申込日
		outputList.add(eoeleStat);				// ｅｏ電気契約ステータス
		outputList.add(eonetSvcKeiNo);			// ｅｏ光お客さまＩＤ
		outputList.add(eonetMskmYmd);			// ｅｏ光申込日
		outputList.add(eonetStat);				// ｅｏ光契約ｽﾃｰﾀｽ(ｅｏ顧客)
		outputList.add(eonetMskmNo);			// ｅｏ光申込番号
		outputList.add(eonetCancelSbt);			// ｅｏ光キャンセル種類
		outputList.add(eonetCancelRsnDbri);		// ｅｏ光キャンセル理由キャンセル大分類
		outputList.add(eonetCancelRsnCbri);		// ｅｏ光キャンセル理由キャンセル中分類
		outputList.add(eonetCancelNgYmd);		// ｅｏ光ＮＧ・キャンセル確定日
		
		JKKBatCommon.printDoubleQuoteBusinessFileUtil(kkifm765FileObj, outputList);
		
		// ファイル出力件数にインクリメントする
		outCount++;
	}
	
	/**
	 * SQLKEY(KK_INSERT_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 executeZM_T_DL_FILE_KANRI_KK_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());

		// DBアクセスを実行します
		db_ZM_T_DL_FILE_KANRI.executeBySqlDefine(paramList, ZM_T_DL_FILE_KANRI_KK_INSERT_001);
	}
	
	/**
	 * ZM_T_DL_FILE_KANRI-KK_INSERT_001を実行する際に必要なパラメータを返す。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * 
	 * @param rc
	 *            共通部品の電子ファイル管理登録から返却された文字列
	 * @param arg3
	 *            共通部品の電子ファイル管理登録に渡したファイル削除年月日
	 * @return setParam ZM_T_DL_FILE_KANRI-KK_INSERT_001を実行する際に必要なパラメータ
	 * @throws Exception
	 */
	private Object[] getDlFileInsertParam(String[] rc, String arg3) throws Exception
	{
		// システム日時
		String fileTimeStamp = JCCBatCommon.getSysDateTime();
		
		// ファイル名
		String fileName = FILE_NM + JKKStrConst.FILE_NM_TIMESTAMP.replaceAll(
				JKKStrConst.FILE_TIMESTAMP_FORMAT, fileTimeStamp);
		
		Object[] setParam = {
				TRN_KANRI_NO,						// 処理管理番号
				fileName,							// ファイル名
				outCount,							// データ件数
				rc[1],								// ファイル登録年月日時分秒
				arg3,								// ファイル削除年月日
				rc[0],								// 電子ファイル管理番号
				rc[1],								// 世代登録年月日時分秒
		};
		return setParam;
	}
}
