/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKGetKanuoreSoOp
*	ソースファイル名	：JBSbatKKGetKanuoreSoOp.java
*	作成者				：富士通　
*	作成日				：2011年05月19日
*＜機能概要＞
*　加入御礼書(オプション)ファイル作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00		2011/05/19	富士通		新規作成
*	v2.00		2012/03/14	FJ)藤原		【ST2-2012-0000400】リモートサポートプラスのオプションサービスコード(定数)を修正
*	v4.00		2013/02/12	FJ)藤原		【KT1-2013-0000184】KK_T_SVKEI_KAISEN_UW_KK_SELECT_003のバインド変数を「サービス契約番号、運用日」から「運用日、サービス契約番号」に修正
*															トレーラに出力する日付をシステム日付から運用日に修正
*	v5.00		2013/04/17	FJ)掛木		【IT1-2013-0000952】住所編集対応
*	v8.00		2014/03/27	FJ)鈴木		【OM-2014-0001220】機器提供サービス契約のSQLを修正。回線にひもづく機器も取得可能とする対応。
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFE038;
import eo.business.util.file.JBSbatKKIFM012;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatKK_T_KKTK_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_PRG;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.common.util.JPCUtilCommon;
import eo.common.util.JZMAdEdit;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
* 加入御礼書(オプション)ファイル作成処理<BR>
* <BR>
* 加入御礼書(オプション)ファイル作成対象を抽出し、ファイル作成を行う。<BR> 
* ・加入御礼書(オプション)ファイル<BR>
* ・DB更新用ファイル(加入御礼書(オプション))<BR>
*<BR>
* @author 富士通
*/
public class JBSbatKKGetKanuoreSoOp extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(進捗)*/
	private static final String D_TBL_NAME_KK_T_PRG = "KK_T_PRG";

	/** テーブル(サービス契約回線内訳)*/
	private static final String D_TBL_NAME_KK_T_SVKEI_KAISEN_UW = "KK_T_SVKEI_KAISEN_UW";

	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

	/** SQL定義キー(KK_SELECT_013)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_013 = "KK_SELECT_013";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String KK_T_PRG_KK_SELECT_002 = "KK_SELECT_002";

	/** SQL定義キー(KK_SELECT_003)*/
	private static final String KK_T_SVKEI_KAISEN_UW_KK_SELECT_003 = "KK_SELECT_003";

// 2014.03.027 OM-2014-0001220 mod start
//	/** SQL定義キー(KK_SELECT_002)*/
//	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_002 = "KK_SELECT_002";
	
	/** SQL定義キー(KK_SELECT_187)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_187 = "KK_SELECT_187";
// 2014.03.027 OM-2014-0001220 mod end

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(進捗)*/
	private JBSbatSQLAccess db_KK_T_PRG = null;

	/** テーブルアクセスクラス(サービス契約回線内訳)*/
	private JBSbatSQLAccess db_KK_T_SVKEI_KAISEN_UW = null;

	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 料金グループコード（eo光ネットホームタイプ）
	 */
	private static final String PRC_GRP_CD_HT = "02";
	/**
	 * 料金グループコード（eo光ネットメゾンタイプ）
	 */
	private static final String PRC_GRP_CD_MZNT = "03";
	/** 
	 * サービス契約ステータス（受付済）
	 */
	private static final String SVC_KEI_STAT_UK = "010";
	/** 
	 * サービス契約ステータス（照査済）
	 */
	private static final String SVC_KEI_STAT_SHOSA = "020";
	/** 
	 * サービス契約ステータス（締結済）
	 */
	private static final String SVC_KEI_STAT_CNC = "030";
	/** 
	 * 進捗ステータス（宅内調査ＯＫ）
	 */
	private static final String PRG_STAT_TAKCHO_OK = "9530";
	/** 
	 * 進捗ステータス（幹線・宅内設計ＯＫ）
	 */
	private static final String PRG_STAT_TAKDSGN_OK = "9550";
	/** 
	 * 進捗ステータス（起点変電所コード取込完了）
	 */
	private static final String PRG_STAT_KITEN_HDSHO = "9560";
	/** 
	 * 進捗ステータス（工事完了）
	 */
	private static final String PRG_STAT_KOJI_FIN = "9700";
	/** 
	 * 進捗ステータス（宅内調査ＮＧ）
	 */
	private static final String PRG_STAT_TAKCHO_NG = "953E";
	/** 
	 * 進捗ステータス（幹線・宅内設計ＮＧ）
	 */
	private static final String PRG_STAT_TAKDSGN_NG = "955E";
	/** 
	 * 進捗ステータス（工事ＮＧ）
	 */
	private static final String PRG_STAT_KOJI_NG = "957E";
	/** 
	 * 進捗ステータス（工事取消）
	 */
	private static final String PRG_STAT_KOJI_CL = "9704";
	
	/**
	 * レター発送仕分区分（通常住所に送付）
	 */
	private static final String LETTER_HASSO_SHIWAKE_DIV_AD = "0";
	/**
	 * オプションサービスコード（リモートサポートプラス）
	 */
	private static final String OP_SVC_CD_SPRTPLUS = "B021";

	/** 出力件数 */
	private int reccnt = 0;
	
	/** ファイル括り文字 */
	private static final String SCOPE  = "\"";
	
	/**
	 * 初期処理
	 * @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_KK_T_PRG = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_PRG);
		db_KK_T_SVKEI_KAISEN_UW = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEI_KAISEN_UW);
		db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		String svc_kei_no = inMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_KEI_NO);			// サービス契約番号
		HashMap<String, String> mapSvc_kei = new HashMap<String, String>();

		boolean rc = getKK_T_SVC_KEI_KK_SELECT_013(svc_kei_no, mapSvc_kei);

		// 対象外でなければファイル編集を行う
		if (rc)
		{
			// 出力共通電文を生成する。
			JBSbatOutputItem outputBean = new JBSbatOutputItem();

			//
			// ファイル出力（加入御礼書(オプション)ファイル）

			// 加入御礼書(オプション)ファイル用入出力インターフェイスオブジェクトを生成
			JBSbatServiceInterfaceMap mapKKIFE038 = new JBSbatServiceInterfaceMap();
			
			// 項目を設定

			// サービス契約回線内訳用パラメータの設定
			Object[] setParam1 = {
// 2013/02/12 KT1-2013-0000184 chg start
//					svc_kei_no,
//					super.opeDate,
					super.opeDate,
					svc_kei_no,
// 2013/02/12 KT1-2013-0000184 chg end
			};

			// サービス契約回線内訳取得
			executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_003(setParam1);
			
			// 結果を取得
			JBSbatCommonDBInterface rcvMap = db_KK_T_SVKEI_KAISEN_UW.selectNext();
			
			if (rcvMap != null)
			{
				// 利用場所_郵便番号 3桁目と4桁目の間に -(ﾊｲﾌﾝ)を付与
				mapKKIFE038.setString(JBSbatKKIFE038.KAISEN_PLACE_PCD,
					JPCUtilCommon.hyhunPcd(rcvMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD)));

				// ■■■ 2013/4/17 IT1-2013-0000952 mod START ■■■
				// 名寄せ対応
				this.executeKaisenNayose(mapKKIFE038, rcvMap);
				
				//// 利用場所_都道府県名
				//mapKKIFE038.setString(JBSbatKKIFE038.KAISEN_PLACE_STATE_NM,
				//		rcvMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM));
				//// 利用場所_市区町村名
				//mapKKIFE038.setString(JBSbatKKIFE038.KAISEN_PLACE_CITY_NM,
				//		rcvMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM));
				//// 利用場所_大字通称名
				//mapKKIFE038.setString(JBSbatKKIFE038.KAISEN_PLACE_OAZTSU_NM,
				//		rcvMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM));
				//// 利用場所_字丁目名
				//mapKKIFE038.setString(JBSbatKKIFE038.KAISEN_PLACE_AZCHO_NM,
				//		rcvMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM));
				//// 利用場所_番地号
				//mapKKIFE038.setString(JBSbatKKIFE038.KAISEN_PLACE_BNCHIGO,
				//		rcvMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO));
				//// 利用場所_住所補記・建物名
				//mapKKIFE038.setString(JBSbatKKIFE038.KAISEN_PLACE_ADRTTM,
				//		rcvMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM));
				//// 利用場所_住所補記・部屋番号
				//mapKKIFE038.setString(JBSbatKKIFE038.KAISEN_PLACE_ADRRM,
				//		rcvMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM));
				// ■■■ 2013/4/17 IT1-2013-0000952 mod   END ■■■
				
				// 住所未確定フラグ
				mapKKIFE038.setString(JBSbatKKIFE038.AD_MI_FIX_FLG,
						rcvMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_AD_MI_FIX_FLG));
			}
			rcvMap = null;

// 2014.03.27 OM-2014-0001220 mod start
//			// 機器提供サービス契約用パラメータの設定
//			Object[] setParam2 = {
//					svc_kei_no,
//					super.opeDate,
//			};
//
//			// 機器提供サービス契約取得
//			executeKK_T_KKTK_SVC_KEI_KK_SELECT_002(setParam2);

			// 機器提供サービス契約用パラメータの設定
			Object[] setParam2 = {
					svc_kei_no,
					super.opeDate,
					svc_kei_no,
					super.opeDate,
					super.opeDate,
					super.opeDate,
			};

			// 機器提供サービス契約取得（サービス契約＆回線 にひもづく最新の機器を取得）
			executeKK_T_KKTK_SVC_KEI_KK_SELECT_187(setParam2);
// 2014.03.27 OM-2014-0001220 mod end

			// 結果を取得
			rcvMap = db_KK_T_KKTK_SVC_KEI.selectNext();
			
			if (rcvMap != null)
			{
				// 機器送付先名
				mapKKIFE038.setString(JBSbatKKIFE038.KIKI_SOHUS_NM,
						rcvMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_NM));
				// 機器送付先_郵便番号 3桁目と4桁目の間に -(ﾊｲﾌﾝ)を付与
				mapKKIFE038.setString(JBSbatKKIFE038.KIKI_SOHUS_PCD,
						JPCUtilCommon.hyhunPcd(rcvMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_PCD)));

				// ■■■ 2013/4/17 IT1-2013-0000952 mod START ■■■
				// 名寄せ対応
				this.executeKikiNayose(mapKKIFE038, rcvMap);
				
				//// 機器送付先_都道府県名
				//mapKKIFE038.setString(JBSbatKKIFE038.KIKI_SOHUS_STATE_NM,
				//		rcvMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_STATE_NM));
				//// 機器送付先_市区町村名
				//mapKKIFE038.setString(JBSbatKKIFE038.KIKI_SOHUS_CITY_NM,
				//		rcvMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_CITY_NM));
				//// 機器送付先_大字通称名
				//mapKKIFE038.setString(JBSbatKKIFE038.KIKI_SOHUS_OAZTSU_NM,
				//		rcvMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_OAZTSU_NM));
				//// 機器送付先_字丁目名
				//mapKKIFE038.setString(JBSbatKKIFE038.KIKI_SOHUS_AZCHO_NM,
				//		rcvMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_AZCHO_NM));
				//// 機器送付先_番地号
				//mapKKIFE038.setString(JBSbatKKIFE038.KIKI_SOHUS_BNCHIGO,
				//		rcvMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_BNCHIGO));
				//// 機器送付先_住所補記・建物名
				//mapKKIFE038.setString(JBSbatKKIFE038.KIKI_SOHUS_ADRTTM,
				//		rcvMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_ADRTTM));
				//// 機器送付先_住所補記・部屋番号
				//mapKKIFE038.setString(JBSbatKKIFE038.KIKI_SOHUS_ADRRM,
				//		rcvMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_ADRRM));
				// ■■■ 2013/4/17 IT1-2013-0000952 mod   END ■■■
			}
			rcvMap = null;

			// レター発送仕分区分
			mapKKIFE038.setString(JBSbatKKIFE038.LETTER_HASSO_SHIWAKE_DIV, LETTER_HASSO_SHIWAKE_DIV_AD);

			// 契約者名義
			mapKKIFE038.setString(JBSbatKKIFE038.CUST_NM,
					inMap.getString(JBSbatCK_T_CUST.CUST_NM));
			// お客様_郵便番号 3桁目と4桁目の間に -(ﾊｲﾌﾝ)を付与
			mapKKIFE038.setString(JBSbatKKIFE038.KEISHA_PCD,
					JPCUtilCommon.hyhunPcd(inMap.getString(JBSbatCK_T_CUST.KEISHA_PCD)));

			// ■■■ 2013/4/17 IT1-2013-0000952 mod START ■■■
			// 名寄せ対応
			this.executeKeishaNayose(mapKKIFE038, inMap);
			
			//// お客様_都道府県名
			//mapKKIFE038.setString(JBSbatKKIFE038.KEISHA_STATE_NM,
			//		inMap.getString(JBSbatCK_T_CUST.KEISHA_STATE_NM));
			//// お客様_市区町村名
			//mapKKIFE038.setString(JBSbatKKIFE038.KEISHA_CITY_NM,
			//		inMap.getString(JBSbatCK_T_CUST.KEISHA_CITY_NM));
			//// お客様_大字通称名
			//mapKKIFE038.setString(JBSbatKKIFE038.KEISHA_OAZTSU_NM,
			//		inMap.getString(JBSbatCK_T_CUST.KEISHA_OAZTSU_NM));
			//// お客様_字丁目名
			//mapKKIFE038.setString(JBSbatKKIFE038.KEISHA_AZCHO_NM,
			//		inMap.getString(JBSbatCK_T_CUST.KEISHA_AZCHO_NM));
			//// お客様_番地号
			//mapKKIFE038.setString(JBSbatKKIFE038.KEISHA_BNCHIGO,
			//		inMap.getString(JBSbatCK_T_CUST.KEISHA_BNCHIGO));
			//// お客様_住所補記・建物名
			//mapKKIFE038.setString(JBSbatKKIFE038.KEISHA_ADRTTM,
			//		inMap.getString(JBSbatCK_T_CUST.KEISHA_ADRTTM));
			//// お客様_住所補記・部屋番号
			//mapKKIFE038.setString(JBSbatKKIFE038.KEISHA_ADRRM,
			//		inMap.getString(JBSbatCK_T_CUST.KEISHA_ADRRM));
			// ■■■ 2013/4/17 IT1-2013-0000952 mod   END ■■■

			// サービス契約番号
			mapKKIFE038.setString(JBSbatKKIFE038.SVC_KEI_NO, svc_kei_no);
			// 料金グループコード（契約サービス）
			mapKKIFE038.setString(JBSbatKKIFE038.PRC_GRP_CD,
					mapSvc_kei.get(JBSbatKK_T_SVC_KEI.PRC_GRP_CD));
			// ＳＹＳＩＤ
			mapKKIFE038.setString(JBSbatKKIFE038.SYSID,
					inMap.getString(JBSbatKK_T_OP_SVC_KEI.SYSID));
			// サービス開始年月日
			// 契約サービスのサービス開始前は、ALL9設定する
			String svc_kei_stat = mapSvc_kei.get(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
			if (SVC_KEI_STAT_UK.equals(svc_kei_stat)
					|| SVC_KEI_STAT_SHOSA.equals(svc_kei_stat)
					|| SVC_KEI_STAT_CNC.equals(svc_kei_stat))
			{
				mapKKIFE038.setString(JBSbatKKIFE038.SVC_STA_YMD, "99999999");
			}
			else
			{
				mapKKIFE038.setString(JBSbatKKIFE038.SVC_STA_YMD,
						inMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD));
			}
			// オプション種別　リモートサポートプラス固定
			mapKKIFE038.setString(JBSbatKKIFE038.OP_SVC_CD, OP_SVC_CD_SPRTPLUS);
			// 送付先住所フラグ NULL。未使用。
			
			// 出力フラグを設定
			mapKKIFE038.setOutFlg(true);
			
			// 出力共通電文入出力インターフェイスを設定する
			outputBean.addOutMapList(mapKKIFE038);

			reccnt++;

			//
			// ファイル出力（DB更新用ファイル(加入御礼書(オプション))）

			// DB更新用ファイル(加入御礼書(オプション))用入出力インターフェイスオブジェクトを生成
			JBSbatServiceInterfaceMap mapKKIFM012 = new JBSbatServiceInterfaceMap();
			
			// 項目を設定
			// オプションサービス契約番号
			mapKKIFM012.setString(JBSbatKKIFM012.OP_SVC_KEI_NO,
					inMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_NO));
			// 世代登録年月日時分秒 
			mapKKIFM012.setString(JBSbatKKIFM012.GENE_ADD_DTM,
					inMap.getString(JBSbatKK_T_OP_SVC_KEI.GENE_ADD_DTM));
			
			// 出力フラグを設定
			mapKKIFM012.setOutFlg(true);
			
			// 出力共通電文入出力インターフェイスを設定する
			outputBean.addOutMapList_2(mapKKIFM012);
			
			
			// 出力共通電文を返却
			return outputBean;
		}
		else
		{
			return null;
		}
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_SVC_KEI.close();
		db_KK_T_PRG.close();
		db_KK_T_SVKEI_KAISEN_UW.close();
		db_KK_T_KKTK_SVC_KEI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/

		// トレーラー部出力文字列を生成
		StringBuffer trailerbuf = new StringBuffer();
		trailerbuf.append("E");
		trailerbuf.append(",");
		trailerbuf.append(reccnt + "");
		trailerbuf.append(",");
// 2013/02/12 KT1-2013-0000184 chg start
//		trailerbuf.append(JCCBatCommon.getSysDate());
		trailerbuf.append(super.opeDate);
// 2013/02/12 KT1-2013-0000184 chg end
		
		// トレーラレコードの出力
		super.commonItem.getOutPutFile().write(SCOPE + trailerbuf.toString().replace(",", SCOPE + "," + SCOPE) + SCOPE);

	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_013)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SVC_KEI_NO
	 *		 	RSV_APLY_YMD
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_013(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_013);
	}

	/**
	 * SQLKEY(KK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SVC_KEI_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_PRG_KK_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_PRG.selectBySqlDefine(paramList, KK_T_PRG_KK_SELECT_002);
	}

	/**
	 * SQLKEY(KK_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	USE_STAYMD
	 *		 	SVC_KEI_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVKEI_KAISEN_UW.selectBySqlDefine(paramList, KK_T_SVKEI_KAISEN_UW_KK_SELECT_003);
	}

// 2014.03.27 OM-2014-0001220 del start
//	/**
//	 * SQLKEY(KK_SELECT_002)でDBアクセスを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数でバイント変数を設定します。<br>
//	 *
//	 * 2.DBアクセスを実行します。<br>
//	 * 
//	 * 3.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
//	 *		 	SVC_KEI_NO
//	 *		 	RSV_APLY_YMD
//	 * </pre>
//	 * <p>
//	 * @param param バイント変数の値配列。
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private void executeKK_T_KKTK_SVC_KEI_KK_SELECT_002(Object[] param) throws Exception
//	{
//		// バイント変数のリストを生成します
//		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//		paramList.setValue(param[0].toString());
//		paramList.setValue(param[1].toString());
//
//		// DBアクセスを実行します
//		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_002);
//	}
// 2014.03.27 OM-2014-0001220 del end
	
// 2014.03.27 OM-2014-0001220 add start
	/**
	 * SQLKEY(KK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SVC_KEI_NO
	 *		 	RSV_APLY_YMD
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKTK_SVC_KEI_KK_SELECT_187(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_187);
	}
// 2014.03.27 OM-2014-0001220 add end

	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * サービス契約番号にひもづくデータを取得します。
	 * <BR>
	 * @param svc_kei_no サービス契約番号
	 * @param outmap サービス契約情報
	 * @throws Exception 
	 * @return 対象外であればfalse
x	 */
	private boolean getKK_T_SVC_KEI_KK_SELECT_013(String svc_kei_no, HashMap<String, String> outmap) throws Exception
	{
		JBSbatCommonDBInterface rcvMap = new JBSbatCommonDBInterface();		// 結果取得用
		
		// パラメータの設定
		Object[] setParam = {
				svc_kei_no,
				super.opeDate,
		};
		// 抽出したサービス契約番号にひもづくサービス契約を取得
		executeKK_T_SVC_KEI_KK_SELECT_013(setParam);
	
		// データを読む
		rcvMap = db_KK_T_SVC_KEI.selectNext();

		// 取得できなかった場合は対象外となる
		if (rcvMap == null)
		{
			return false;
		}
		// 取得できた場合は、サービスの状態により、工事結果を調べる
		else
		{
			// サービス契約ステータス
			String svc_kei_stat = rcvMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);

			// 異動区分
			outmap.put(JBSbatKK_T_SVC_KEI.IDO_DIV, rcvMap.getString(JBSbatKK_T_SVC_KEI.IDO_DIV));
			
			// 料金グループコード
			String prc_grp_cd = rcvMap.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD);
			outmap.put(JBSbatKK_T_SVC_KEI.PRC_GRP_CD, prc_grp_cd);
			
			// サービス契約ステータス
			outmap.put(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT, svc_kei_stat);

			// ホームタイプ、および、メゾンタイプ（マンションタイプは除く）
			// サービス提供中より前の状態の場合
			if (PRC_GRP_CD_HT.equals(prc_grp_cd) || PRC_GRP_CD_MZNT.equals(prc_grp_cd))
			{
				if (SVC_KEI_STAT_UK.equals(svc_kei_stat)
						|| SVC_KEI_STAT_SHOSA.equals(svc_kei_stat)
						|| SVC_KEI_STAT_CNC.equals(svc_kei_stat))
				{
					// 宅内調査ＯＫ、起点変電所ｺｰﾄﾞ取込完了、工事完了のいずれかの
					// 工事結果が進捗テーブルに存在すること
					// 但し、その後ＮＧが連携されてきている場合は対象外とする
					if (existPrg(svc_kei_no))
					{
						return true;
					}
					else
					{
						return false;
					}
				}
				else
				{
					return true;
				}
			}
			else
			{
				return true;
			}
		}
	}

	/**
	 * 進捗より判定
	 * <BR>
	 * 進捗に該当する進捗ステータスが存在すれば True を返却します。<BR>
	 * ・宅内調査ＯＫ、起点変電所ｺｰﾄﾞ取込完了、工事完了のいずれかの<BR> 
	 * 　工事結果が進捗テーブルに存在すること<BR> 
	 * ・但し、その後ＮＧが連携されてきている場合は対象外とする<BR> 
	 * <BR>
	 * @param svc_kei_no サービス契約番号
	 * @return 進捗ステータスが存在すればTrue、但しＮＧが連携されてきている場合はFalse
	 * @throws Exception 
	 */
	private boolean existPrg(String svc_kei_no) throws Exception
	{
		JBSbatCommonDBInterface rcvMap = new JBSbatCommonDBInterface();		// 結果取得用

		// パラメータの設定
		Object[] setParam = {
				svc_kei_no,
		};
		
		// 進捗テーブル抽出（進捗年月日時分秒の降順になっている）
		executeKK_T_PRG_KK_SELECT_002(setParam);
		
		String prg_stat = "";				// 進捗ステータス
		int ngcnt = 0;						// NGカウント
		int okcnt = 0;						// OKカウント
		
		// １件目を先読み
		rcvMap = db_KK_T_PRG.selectNext();

		// 結果を取得
		while(rcvMap != null)
		{
			// 進捗ステータス
			prg_stat = rcvMap.getString(JBSbatKK_T_PRG.PRG_STAT);
			
			// 宅内調査ＮＧ、幹線・宅内設計ＮＧ、工事ＮＧ、工事取消のいずれか
			if (PRG_STAT_TAKCHO_NG.equals(prg_stat) 
					|| PRG_STAT_TAKDSGN_NG.equals(prg_stat) 
					|| PRG_STAT_KOJI_NG.equals(prg_stat) 
					|| PRG_STAT_KOJI_CL.equals(prg_stat))
			{
				ngcnt++;
			}
			
			// 宅内調査ＯＫ、幹線・宅内設計ＯＫ、起点変電所コード取込完了、工事完了のいずれか
			// が出現したら繰り返し終了
			if (PRG_STAT_TAKCHO_OK.equals(prg_stat) 
					|| PRG_STAT_TAKDSGN_OK.equals(prg_stat) 
					|| PRG_STAT_KITEN_HDSHO.equals(prg_stat)
					|| PRG_STAT_KOJI_FIN.equals(prg_stat))
			{
				okcnt++;
				break;
			}
			
			// 次のデータを読む
			rcvMap = db_KK_T_PRG.selectNext();
		}

		// 工事ＯＫなし
		if (okcnt == 0)
		{
			return false;
		}
		else
		{
			// 工事ＯＫあり、ＮＧなし
			if (ngcnt == 0)
			{
				return true;
			}
			// 工事ＯＫあり、ＮＧあり
			else
			{
				return false;
			}
		}
	}

	// ■■■ 2013/4/17 IT1-2013-0000952 add START ■■■
	/**
	 * 名寄せされていれば番地取り出して返し、番地以外を出力マップに格納する（利用場所）
	 * @param outMap ファイル出力用マップ
	 * @param inMap テーブル抽出マップ
	 * @throws Exception 各種エラー
	 */
	private void executeKaisenNayose(JBSbatServiceInterfaceMap outMap, JBSbatCommonDBInterface inMap) throws Exception
	{
		// 共通部品：名寄せ
		String[] nayoses = null;
		int i = 0;
		nayoses = JZMAdEdit.getPtn07(
				inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM)
				, inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM)
				, inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM)
				, inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM)
				, inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO)
				, inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM)
				, inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM));
		outMap.setString(JBSbatKKIFE038.KAISEN_PLACE_STATE_NM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KAISEN_PLACE_CITY_NM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KAISEN_PLACE_OAZTSU_NM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KAISEN_PLACE_AZCHO_NM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KAISEN_PLACE_BNCHIGO, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KAISEN_PLACE_ADRTTM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KAISEN_PLACE_ADRRM, nayoses[i++]);
	}

	/**
	 * 名寄せされていれば番地取り出して返し、番地以外を出力マップに格納する（機器送付先）
	 * @param outMap ファイル出力用マップ
	 * @param inMap テーブル抽出マップ
	 * @throws Exception 各種エラー
	 */
	private void executeKikiNayose(JBSbatServiceInterfaceMap outMap, JBSbatCommonDBInterface inMap) throws Exception
	{
		// 共通部品：名寄せ
		String[] nayoses = null;
		int i = 0;
		nayoses = JZMAdEdit.getPtn07(
				inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_STATE_NM)
				, inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_CITY_NM)
				, inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_OAZTSU_NM)
				, inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_AZCHO_NM)
				, inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_BNCHIGO)
				, inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_ADRTTM)
				, inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_ADRRM));
		outMap.setString(JBSbatKKIFE038.KIKI_SOHUS_STATE_NM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KIKI_SOHUS_CITY_NM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KIKI_SOHUS_OAZTSU_NM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KIKI_SOHUS_AZCHO_NM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KIKI_SOHUS_BNCHIGO, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KIKI_SOHUS_ADRTTM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KIKI_SOHUS_ADRRM, nayoses[i++]);
	}

	/**
	 * 名寄せされていれば番地取り出して返し、番地以外を出力マップに格納する（お客様）
	 * @param outMap ファイル出力用マップ
	 * @param inMap テーブル抽出マップ
	 * @throws Exception 各種エラー
	 */
	private void executeKeishaNayose(JBSbatServiceInterfaceMap outMap, JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 共通部品：名寄せ
		String[] nayoses = null;
		int i = 0;
		nayoses = JZMAdEdit.getPtn07(
				inMap.getString(JBSbatCK_T_CUST.KEISHA_STATE_NM)
				, inMap.getString(JBSbatCK_T_CUST.KEISHA_CITY_NM)
				, inMap.getString(JBSbatCK_T_CUST.KEISHA_OAZTSU_NM)
				, inMap.getString(JBSbatCK_T_CUST.KEISHA_AZCHO_NM)
				, inMap.getString(JBSbatCK_T_CUST.KEISHA_BNCHIGO)
				, inMap.getString(JBSbatCK_T_CUST.KEISHA_ADRTTM)
				, inMap.getString(JBSbatCK_T_CUST.KEISHA_ADRRM));
		outMap.setString(JBSbatKKIFE038.KEISHA_STATE_NM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KEISHA_CITY_NM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KEISHA_OAZTSU_NM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KEISHA_AZCHO_NM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KEISHA_BNCHIGO, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KEISHA_ADRTTM, nayoses[i++]);
		outMap.setString(JBSbatKKIFE038.KEISHA_ADRRM, nayoses[i++]);
	}
	// ■■■ 2013/4/17 IT1-2013-0000952 add   END ■■■
}
