/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKDobanItenAutoAdd
*	ソースファイル名	：JBSbatKKDobanItenAutoAdd.java
*	作成者				：富士通　
*	作成日				：2014年10月17日
*＜機能概要＞
*　同番移転自動登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v11.00.00   2014/10/21  FJ)松本    【ANK-2309-04-00】新規作成
*	v11.01.00   2014/11/11  FJ)松本    【IT1-2014-0000366】
*	v11.02.00   2014/11/14  FJ)松本    【IT2-2014-0000328】
*	v11.03.00   2014/11/14  FJ)松本    【IT2-2014-0000331】
*	v11.04.00   2014/11/26  FJ)松本    【ST-2014-0000168】
*	v11.05.00   2014/12/10  FJ)松本    【OM-2014-0003912】個人で登録されているべきところ 法人で登録されていた
*	v11.06.00   2014/12/10  FJ)松本    【OM-2014-0003913】NTT契約者住所がセットされれいるべきところ、 セットされていない
*	v14.00.00   2015/05/19  FJ)吉田    【ANK-2535-00-00】同番移転全チャネル販売対応（STEP2）
*	v22.00.00   2016/01/21  FJ)藤本    【OM-2015-0003273】性能改善_ＫＫ同番移転自動登録/同番移転自動登録Ｄ/EO2ER0110J
*   v41.00.00	2019/03/08  FJ)澤田	   【ANK-3534-00-00】社名変更対応の資料連携について
*********************************************************************/
package eo.business.service;

import java.util.HashMap;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JKKBatCommon;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatKK_M_PPLAN;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_UCWK;
import eo.business.util.table.JBSbatKK_T_MSKM_DTL;
import eo.business.util.table.JBSbatKK_T_SVKEIUW_EOH_TEL;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.business.util.table.JBSbatTU_T_BMP_KOJI;
import eo.business.util.table.JBSbatTU_T_DOBANITEN;
import eo.business.util.table.JBSbatZM_M_AD_TG_NO_KUKAKU;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.util.JCCOracleSeqUtil;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatOutputFileUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKDobanItenAutoAdd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/

	/** テーブル(回線対象サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KAISEN_TG_SVKEI = "KK_T_KAISEN_TG_SVKEI";

	/** テーブル(同番移転)*/
	private static final String D_TBL_NAME_TU_T_DOBANITEN = "TU_T_DOBANITEN";

	/** テーブル(サービス契約内訳<eo光電話>)*/
	private static final String D_TBL_NAME_KK_T_SVKEIUW_EOH_TEL = "KK_T_SVKEIUW_EOH_TEL";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";
	
	/** テーブル(お客様)*/
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";
	
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";
	
	/** テーブル(住所対象番号区画)*/
	private static final String D_TBL_NAME_ZM_M_AD_TG_NO_KUKAKU = "ZM_M_AD_TG_NO_KUKAKU";
	
	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";

	// 20160121 OM-2015-0003273 性能改善 ADD START
	/** テーブル(サービス契約内訳)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_UCWK = "KK_T_SVC_KEI_UCWK";
	// 20160121 OM-2015-0003273 性能改善 ADD END

	/** SQL定義キー(KK_SELECT_036)*/
	private static final String KK_T_KAISEN_TG_SVKEI_KK_SELECT_036 = "KK_SELECT_036";
	
	/** SQL定義キー(KK_SELECT_004)*/
	private static final String TU_T_DOBANITEN_KK_SELECT_004 = "KK_SELECT_004";
	
	/** SQL定義キー(KK_SELECT_309)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_309 = "KK_SELECT_309";
	
	/** SQL定義キー(KK_SELECT_064)*/
	private static final String CK_T_CUST_KK_SELECT_064 = "KK_SELECT_064";
	
	/** SQL定義キー(KK_SELECT_003)*/
	private static final String ZM_M_AD_TG_NO_KUKAKU_KK_SELECT_003 = "KK_SELECT_003";
	
	/** SQL定義キー(KK_SELECT_008)*/
	private static final String ZM_M_CD_NM_KANRI_KK_SELECT_008 = "KK_SELECT_008";
	
//	IT1-2014-0000366 DELETE START
//	/** SQL定義キー(KK_INSERT_002)*/
//	private static final String ZM_T_DL_FILE_KANRI_KK_INSERT_002 = "KK_INSERT_002";
//	IT1-2014-0000366 DELETE END

	// 20160121 OM-2015-0003273 性能改善 ADD START
	/** SQL定義キー(KK_SELECT_127)*/
	private static final String KK_T_SVC_KEI_UCWK_KK_SELECT_127 = "KK_SELECT_127";
	// 20160121 OM-2015-0003273 性能改善 ADD END

	/** テーブルアクセスクラス(回線対象サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KAISEN_TG_SVKEI = null;

	/** テーブルアクセスクラス(同番移転)*/
	private JBSbatSQLAccess db_TU_T_DOBANITEN = null;

	/** テーブルアクセスクラス(サービス契約内訳<eo光電話>)*/
	private JBSbatSQLAccess db_KK_T_SVKEIUW_EOH_TEL = null;
	
	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	
	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;
	
	/** テーブルアクセスクラス(住所対象番号区画)*/
	private JBSbatSQLAccess db_ZM_M_AD_TG_NO_KUKAKU = null;
	
	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	
	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	// 20160121 OM-2015-0003273 性能改善 ADD START
	/** テーブルアクセスクラス(サービス契約内訳)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_UCWK = null;
	// 20160121 OM-2015-0003273 性能改善 ADD END

	/** オラクルシーケンス(同番移転番号)*/
	private static final String SEQ_DOBANITEN_NO = "SEQ_DOBANITEN_NO";

	/** inMap項目名(サービス契約内訳.異動区分（対象のサービス契約内訳番号における最小世代の移動区分）)*/
	private static final String ORI_IDO_DIV = "ORI_IDO_DIV";
	
	/** inMap項目名(サービス契約内訳<eo光電話>.NTT契約者名)*/
	private static final String UCWK_NTT_KEISHA_NM = "UCWK_NTT_KEISHA_NM";
	
	/** inMap項目名(サービス契約内訳<eo光電話>.NTT契約者カナ名)*/
	private static final String UCWK_NTT_KSH_KANA = "UCWK_NTT_KSH_KANA";
	
	/** inMap項目名(サービス契約内訳<eo光電話>.NTT契約者都道府県名)*/
	private static final String UCWK_NTT_KEISHA_STATE_NM = "UCWK_NTT_KEISHA_STATE_NM";
	
	/** inMap項目名(サービス契約内訳<eo光電話>.NTT契約者市区町村名)*/
	private static final String UCWK_NTT_KEISHA_CITY_NM = "UCWK_NTT_KEISHA_CITY_NM";
	
	/** inMap項目名(サービス契約内訳<eo光電話>.NTT契約者大字通称名)*/
	private static final String UCWK_NTT_KEISHA_OAZTSU_NM = "UCWK_NTT_KEISHA_OAZTSU_NM";
	
	/** inMap項目名(サービス契約内訳<eo光電話>.NTT契約者字丁目名)*/
	private static final String UCWK_NTT_KEISHA_AZCHO_NM = "UCWK_NTT_KEISHA_AZCHO_NM";
	
	/** inMap項目名(サービス契約内訳<eo光電話>.NTT契約者番地号)*/
	private static final String UCWK_NTT_KEISHA_BNCHIGO = "UCWK_NTT_KEISHA_BNCHIGO";
	
	/** inMap項目名(サービス契約内訳<eo光電話>.NTT契約者住所補記・建物名)*/
	private static final String UCWK_NTT_KEISHA_ADRTTM = "UCWK_NTT_KEISHA_ADRTTM";

	/** inMap項目名(サービス契約内訳<eo光電話>.NTT契約者住所補記・部屋番号)*/
	private static final String UCWK_NTT_KEISHA_ADRRM = "UCWK_NTT_KEISHA_ADRRM";
	
	/** リスト出力項目キー(お客さまID)*/
	private static final String LISTOUT_CUST_ID = "CUST_ID";
	
	/** リスト出力項目キー(料金プラン名)*/
	private static final String LISTOUT_PPLAN_NM = "PPLAN_NM";
	
	/** リスト出力項目キー(電話番号)*/
	private static final String LISTOUT_TELNO = "TELNO";
	
	/** リスト出力項目キー(利用場所住所)*/
	private static final String LISTOUT_RIYO_ADDRESS = "RIYO_ADDRESS";
	
	/** リスト出力項目キー(NTT契約者住所)*/
	private static final String LISTOUT_NTT_KEI_ADDRESS = "NTT_KEI_ADDRESS";
	
	/** リスト出力項目キー(異動区分)*/
	private static final String LISTOUT_IDO_DIV = "IDO_DIV";

	/** リスト出力項目キー(番号ポータビリティの利用場所)*/
	private static final String LISTOUT_BMP_RIYO_BASYO = "BMP_RIYO_BASYO";
	
	/** リスト出力項目キー(NTT電話番号移転手続き)*/
	private static final String LISTOUT_NTT_BAN_ITEN_TTDK = "NTT_BAN_ITEN_TTDK";
	
	/** リスト出力項目キー(同番移転簡易チェック結果)*/
	private static final String LISTOUT_DBNITN_KOPT_NAI_SKEKKA = "DBNITN_KOPT_NAI_SKEKKA";
	
	/** リスト出力項目キー(同番移転自動登録実行有無)*/
	private static final String LISTOUT_DBNITN_JIKO_UM = "DBNITN_JIKO_UM";

//	IT1-2014-0000366 DELETE START
//	/** 電子ファイル管理：ファイルコード */
//	private static final String EFILE_KANRI_FILE_CD = "0000";
//	
//	/** 同番移転可能エリアチェック結果リストの処理管理番号 */
//	private static final String TRN_KANRI_NO = "000000000123";
//	
//	/** ファイル出力データ件数 */
//	private int recCnt = 0;
//	
//	/** 出力ファイルのパス */
//	private String outFilePath1;
//	IT1-2014-0000366 DELETE END
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// DBアクセスクラスを生成します
		db_KK_T_KAISEN_TG_SVKEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAISEN_TG_SVKEI);
		db_TU_T_DOBANITEN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_TU_T_DOBANITEN);
		db_KK_T_SVKEIUW_EOH_TEL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEIUW_EOH_TEL);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_CK_T_CUST =  new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		db_ZM_M_CD_NM_KANRI =  new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_ZM_M_AD_TG_NO_KUKAKU = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_AD_TG_NO_KUKAKU);
		// 20160121 OM-2015-0003273 性能改善 ADD START
		db_KK_T_SVC_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_UCWK);
		// 20160121 OM-2015-0003273 性能改善 ADD END
//IT1-2014-0000366 DELETE START
//		//FREEITEMを取得する
//		String[] free_item = commonItem.getFreeItem().split(";");
//		outFilePath1 = free_item[0];
//IT1-2014-0000366 DELETE END
		//ヘッダー出力
		writeHeader();
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		//戻り値の出力データ
		JBSbatOutputItem outputItem = null;

		// 20160121 OM-2015-0003273 性能改善 ADD START
		// サービス契約内訳のキー情報から同番移転自動登録対象データを取得する
		HashMap<?, ?> dobanItenAutoAddTgMap = getDobanItenAutoAddTgMap(inMap);
		if (null == dobanItenAutoAddTgMap)
		{
			// 次レコードを処理 ※抽出条件に合致しないデータであるため処理済フラグ更新も行わない。
			return outputItem;
		}
		// 同番移転自動登録対象データを入力情報として設定する
		inMap.setMap(dobanItenAutoAddTgMap);
		// 20160121 OM-2015-0003273 性能改善 ADD END

		// 同番移転申込有無の取得
		String dobanitenMskmUm = inMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DOBANITEN_MSKM_UM);
		// 同番移転手続実施者識別コードの取得
		String dobanitenTtdkJssisSkcd = inMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DOBANITEN_TTDK_JSSIS_SKCD);
		// 同番移転KOPT内審査結果コードの取得
		String dbnitnKoptNaiSkekkaCd = inMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DBNITN_KOPT_NAI_SKEKKA_CD);
		// サービス契約番号の取得
		String svcKeiNo = inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);
		// 申込形態コードの取得
		String mskmFormCd = inMap.getString(JBSbatKK_T_MSKM_DTL.MSKM_FORM_CD);
		// 異動区分（対象のサービス契約内訳番号における最小世代の移動区分）
		String oriIdoDiv = inMap.getString(ORI_IDO_DIV);
		// 異動区分名の取得
		String idoDivName =getIdoDivName(oriIdoDiv);
		// 電話番号の取得
		String telNo = inMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TELNO);
		// 料金グループコード
		String prcGrpCd = "";
		// 料金プランコード
		String pplanCd = "";
		// 料金プラン名
		String pplanName = "";
		
		// 同一回線上のサービス契約レコードを取得(ネット・電話併用ならネットの方)
		JBSbatCommonDBInterface svcKeiRec = getSvcKeiRec(svcKeiNo);
		if(svcKeiRec != null)
		{
			// 料金グループコードの取得(ネット・電話併用ならネットの方)
			prcGrpCd = svcKeiRec.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD);
			// 料金プランコードの取得(ネット・電話併用ならネットの方)
			pplanCd =  svcKeiRec.getString(JBSbatKK_T_SVC_KEI.PPLAN_CD);
			// 料金プラン名の取得(ネット・電話併用ならネットの方)
			pplanName = svcKeiRec.getString(JBSbatKK_M_PPLAN.PPLAN_NM);
			
		}
		// NTT契約者住所の取得
		String nTTAddress = getNTTAddress(inMap);
		// 結果リスト出力などに必要なデータのパラメータマップ
		HashMap<String,String> listParamMap = new HashMap<String,String>();
		
		//【IT2-2014-0000328】 ADD START
		listParamMap.put(JBSbatKK_T_SVC_KEI.PRC_GRP_CD, prcGrpCd);
		listParamMap.put(JBSbatKK_T_SVC_KEI.PPLAN_CD, pplanCd);
		//【IT2-2014-0000328】 ADD END
		
		//--------------------------結果出力リストに出力する値のマッピング 開始-------------------------//
		
		// お客さまID（サービス契約番号）
		listParamMap.put(LISTOUT_CUST_ID, svcKeiNo);
		// 料金プラン名
		listParamMap.put(LISTOUT_PPLAN_NM, pplanName);
		// 電話番号
		listParamMap.put(LISTOUT_TELNO, telNo);
		// NTT契約者住所
		listParamMap.put(LISTOUT_NTT_KEI_ADDRESS, nTTAddress);
		// 異動区分
		listParamMap.put(LISTOUT_IDO_DIV, idoDivName);
		
		// 番号ポータビリティの利用場所
		if("0".equals(dobanitenMskmUm))
		{
			listParamMap.put(LISTOUT_BMP_RIYO_BASYO, "現在のご利用場所で利用");
		}
		else if("1".equals(dobanitenMskmUm))
		{
			listParamMap.put(LISTOUT_BMP_RIYO_BASYO, "引越し先で利用");
		}
		else
		{
			listParamMap.put(LISTOUT_BMP_RIYO_BASYO, "");
		}
		
		// NTT電話番号移転手続き
		if("1".equals(dobanitenTtdkJssisSkcd))
		{
			listParamMap.put(LISTOUT_NTT_BAN_ITEN_TTDK, "お客様自身");
		}
		else if("2".equals(dobanitenTtdkJssisSkcd))
		{
			// ANK-3534-00-00 MOD START
			//listParamMap.put(LISTOUT_NTT_BAN_ITEN_TTDK, "KOPT");
			listParamMap.put(LISTOUT_NTT_BAN_ITEN_TTDK, "OPTAGE");
			// ANK-3534-00-00 MOD END
		}
		else
		{
			listParamMap.put(LISTOUT_NTT_BAN_ITEN_TTDK, "");
		}

		// 同番移転簡易チェック結果
		
		if("1".equals(dbnitnKoptNaiSkekkaCd))
		{
			listParamMap.put(LISTOUT_DBNITN_KOPT_NAI_SKEKKA, "OK");
		}
		else if("2".equals(dbnitnKoptNaiSkekkaCd))
		{
			listParamMap.put(LISTOUT_DBNITN_KOPT_NAI_SKEKKA, "NG");
		}
		else if("3".equals(dbnitnKoptNaiSkekkaCd))
		{
			listParamMap.put(LISTOUT_DBNITN_KOPT_NAI_SKEKKA, "審査不可");
		}
		else
		{
			listParamMap.put(LISTOUT_DBNITN_KOPT_NAI_SKEKKA, "");
		}
		
		// 同番移転自動登録有無(初期値として"未登録"を設定)
		listParamMap.put(LISTOUT_DBNITN_JIKO_UM, "未登録");
		//--------------------------結果出力リストに出力する値のマッピング 終了-------------------------//
		
		
		//自動登録・リスト出力実行判定フラグ
		boolean isAutoAddJikko = false;
		boolean isListOutput   = false;
		
		// 同番移転自動登録・リスト出力の対象絞込み
		// 異動区分が｢新規契約｣、｢サービス追加｣、｢光電話・番号追加｣が自動登録対象
		if("00001".equals(oriIdoDiv) || "00002".equals(oriIdoDiv) || "00041".equals(oriIdoDiv))
		{
			//自動登録・リスト出力の対象となる
			isAutoAddJikko = true;
			isListOutput = true;
			
			// 利用場所住所情報の取得
			JBSbatCommonDBInterface genRiyosakiAddress = getGenRiyosakiAddress((String)inMap.get(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
			String riyoAddress = getRiyoAddress(genRiyosakiAddress,listParamMap);
			
			// 結果出力リストに出力する値のマッピング(利用場所住所取得)
			listParamMap.put(LISTOUT_RIYO_ADDRESS, riyoAddress);
			
			// 異動区分が｢新規契約｣もしくは｢サービス追加｣でマンション契約の場合は自動登録対象外
			if(!("00041".equals(oriIdoDiv)) && ("04".equals(prcGrpCd) || "PA3102".equals(pplanCd)
					|| "PA3104".equals(pplanCd) || "PA3202".equals(pplanCd)|| "PA3204".equals(pplanCd)))
			{
				//自動登録対象外
				isAutoAddJikko = false;
				//ST-2014-0000168 ADD START
				//同番移転申込無で、かつ利用場所とNTT契約者住所が一致する場合は出力リストも対象外
				if(dobanitenTtdkJssisSkcd == null || "".equals(dobanitenTtdkJssisSkcd)) //同番移転申込無
				{
					// 利用場所とNTT住所の比較
					if(riyoAddress.equals(nTTAddress))
					{
						// 一致する場合は結果リストも対象外
						isListOutput   = false;
					}
				}
				//ST-2014-0000168 ADD END
			}
			// 異動区分が｢光電話・番号追加｣で、申込形態コードが'01'(ＷＥＢ),'02'(量販),'03'(訪販)以外の場合は自動登録対象外
			else if("00041".equals(oriIdoDiv) && (!("01".equals(mskmFormCd)) && !("02".equals(mskmFormCd)) && !("03".equals(mskmFormCd))))
			{
				//自動登録・リスト出力対象外
				isAutoAddJikko = false;
				isListOutput = false;
			}
// ANK-2535-00-00 Add Start
			else if("1".equals(genRiyosakiAddress.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_AD_MI_FIX_FLG)))
			{
				//自動登録対象外
				isAutoAddJikko = false;
				//リスト出力対象
				isListOutput = true;
			}
// ANK-2535-00-00 Add End
			else
			{
// 【IT2-2014-0000331】MOD START
//				// 同番移転申込有無の判定(0:現在の場所で利用/1:引越し先で利用)
//				if("0".equals(dobanitenMskmUm))
//				{
//					// 利用場所とNTT住所の比較
//					if(riyoAddress.equals(nTTAddress))
//					{
//						// 一致する場合は自動登録、結果リスト対象外
//						isAutoAddJikko = false;
//						isListOutput   = false;
//					}
//					else
//					{
//						// 同番移転KOPT内審査結果コードのチェック(1:OK/2:NG/3:審査不可)
//						if("1".equals(dbnitnKoptNaiSkekkaCd))
//					{
//							// 自動登録対象
//						isAutoAddJikko = true;
//						}
//						else
//						{
//							// 自動登録対象外
//							isAutoAddJikko = false;
//						}
//					}
//				}
//				else if(("1".equals(dobanitenMskmUm)))// 2:引越し先で利用
//				{
//					if("2".equals(dobanitenTtdkJssisSkcd))// 同番移転手続実施者識別コードの判定(1:お客様自身/2:KOPT）
//					{
//						if("1".equals(dbnitnKoptNaiSkekkaCd))// 同番移転KOPT内審査結果コードのチェック(1:OK/2:NG/3:審査不可)
//						{
//							// 自動登録対象
//							isAutoAddJikko = true;
//						}
//						else
//						{
//							// 自動登録対象外
//							isAutoAddJikko = false;
//						}
//					}
//					else // 1:お客様自身
//					{
//						// 自動登録対象外
//						isAutoAddJikko = false;
//					}
//				}
//				else
//				{
//					//自動登録・リスト出力対象外
//					isAutoAddJikko = false;
//					isListOutput = false;
//				}
				if("2".equals(dobanitenTtdkJssisSkcd))// 同番移転手続実施者識別コードの判定(1:お客様自身/2:KOPT）同番移転申込有
				{
					if("1".equals(dbnitnKoptNaiSkekkaCd))// 同番移転KOPT内審査結果コードのチェック(1:OK/2:NG/3:審査不可)
					{
						// 自動登録対象
						isAutoAddJikko = true;
					}
					else
					{
						// 自動登録対象外
						isAutoAddJikko = false;
					}
				}
				else if("1".equals(dobanitenTtdkJssisSkcd))// 1:お客様自身
				{
					// 自動登録対象外
					isAutoAddJikko = false;
				}
				else if(dobanitenTtdkJssisSkcd == null || "".equals(dobanitenTtdkJssisSkcd)) //同番移転申込無
				{
					// 利用場所とNTT住所の比較
					if(riyoAddress.equals(nTTAddress))
					{
						// 一致する場合は自動登録、結果リスト対象外
						isAutoAddJikko = false;
						isListOutput   = false;
					}
					else
					{
						// 同番移転KOPT内審査結果コードのチェック(1:OK/2:NG/3:審査不可)
						if("1".equals(dbnitnKoptNaiSkekkaCd))
						{
							// 自動登録対象
							isAutoAddJikko = true;
						}
						else
						{
							// 自動登録対象外
							isAutoAddJikko = false;
						}
					}
				}	
//【IT2-2014-0000331】MOD END
			}
		}
		// 自動登録するかどうか
		if(isAutoAddJikko == true)
		{
			// 自動登録対象に対する処理
			execDobanItenAutoAddTarget(inMap,listParamMap);
		}
		// 結果リスト出力するかどうか
		if(isListOutput == true)
		{
			// リスト出力対象なので、出力情報を生成して受け取る
			outputItem = getListOutputItem(inMap,listParamMap);
		}
		// 処理済フラグ更新処理実行
		execSyoriZmFlgUpdate(inMap,listParamMap);

		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		// IT1-2014-0000365 DELETE START
		// 電子ファイル登録前にファイルを閉じる。
		// （明示的にファイルと閉じないと、ファイルの書き込みが終了する前に電話ファイルを登録する可能性があるため）
		//super.commonItem.getOutPutFile().close();

		// 電子ファイル管理・ダウンロードファイル管理登録
		//if(recCnt != 0)
		//{
		//	addEfileKanriDlFileKanri(recCnt);
		//}
		// IT1-2014-0000365 DELETE END
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_KAISEN_TG_SVKEI.close();
		db_TU_T_DOBANITEN.close();
		db_KK_T_SVKEIUW_EOH_TEL.close();
		db_KK_T_SVC_KEI.close();
		db_CK_T_CUST.close();
		db_ZM_T_DL_FILE_KANRI .close();
		db_ZM_M_CD_NM_KANRI .close();
		db_ZM_M_AD_TG_NO_KUKAKU.close();
		// 20160121 OM-2015-0003273 性能改善 ADD START
		db_KK_T_SVC_KEI_UCWK.close();
		// 20160121 OM-2015-0003273 性能改善 ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	// 20160121 OM-2015-0003273 性能改善 ADD START
	/**
	 * サービス契約内訳のキー情報から同番移転自動登録対象データを取得します。
	 * <br>
	 * @param inMap 入力情報
	 * @return 同番移転自動登録対象データ。取得できない場合はnull
	 * @throws Exception 例外が発生した場合
	 */
	private HashMap<?, ?> getDobanItenAutoAddTgMap(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 同番移転自動登録対象データ
		HashMap<?, ?> dobanItenAutoAddTgMap = null;

		String[] param =
		{
				super.opeDate,
				super.opeDate,
				inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO),
				inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.GENE_ADD_DTM),
				super.opeDate
		};
		executeKK_T_SVC_KEI_UCWK_KK_SELECT_127(param);
		JBSbatCommonDBInterface dbInterface = db_KK_T_SVC_KEI_UCWK.selectNext();

		if (null != dbInterface)
		{
			// HashMapで取得
			dobanItenAutoAddTgMap = dbInterface.getMap();
		}

		return dobanItenAutoAddTgMap;
	}
	// 20160121 OM-2015-0003273 性能改善 ADD END

	/**
	 * サービス契約番号をキーとして<br>
	 * 住所変更中以外の現在利用中の住所情報レコードを返す。
	 * 住所情報が存在しない場合はNULLを返す。
	 * @param svcKeiUcwkNo  サービス契約内訳番号
	 * @return 現在利用中の住所情報のJBSbatCommonDBInterfaceオブジェクト
	 * @throws Exception 例外が発生した場合
	 */
	private JBSbatCommonDBInterface getGenRiyosakiAddress(String svcKeiNo) throws Exception
	{
		// 戻り値
		JBSbatCommonDBInterface dbInterface = null;

		String[] param =
		{
				svcKeiNo,
				super.opeDate,
				super.opeDate
		};
		executeKK_T_KAISEN_TG_SVKEI_KK_SELECT_036(param);
		dbInterface = db_KK_T_KAISEN_TG_SVKEI.selectNext();

		return dbInterface;
	}
	
	/**
	 * NTT契約者住所を取得し、スペース除去して返す<br>
	 * @param inMap  入力レコード情報
	 * @return NTT契約者住所文字列
	 * @throws Exception 例外が発生した場合
	 */
	private String getNTTAddress(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// OM-2014-0003913 DEL START
		// サービス契約内訳ステータス
		//String svcKeiUcwkStat = (String)inMap.get(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_STAT);
		// OM-2014-0003913 DEL END
		// NTT契約者住所
		String nTTAddress = "";
		// サービス契約内訳ステータスが受付済の時はまだ番ポ工事が作られていないため
		// サービス契約内訳<eo光電話>から取得する
		
		// OM-2014-0003913 MOD START
		//if(JBSbatKKConst.SVC_KEI_STAT_UK_ZM.equals(svcKeiUcwkStat))
		//
		//{				//NULLは空文字に置き換え、全角スペースは除去して連結する
		//	nTTAddress =  getZenSpaceTrimString(inMap.getString(UCWK_NTT_KEISHA_STATE_NM))
		//				+ getZenSpaceTrimString(inMap.getString(UCWK_NTT_KEISHA_CITY_NM))
		//				+ getZenSpaceTrimString(inMap.getString(UCWK_NTT_KEISHA_OAZTSU_NM))
		//				+ getZenSpaceTrimString(inMap.getString(UCWK_NTT_KEISHA_AZCHO_NM))
		//				+ getZenSpaceTrimString(inMap.getString(UCWK_NTT_KEISHA_BNCHIGO))
		//				+ getZenSpaceTrimString(inMap.getString(UCWK_NTT_KEISHA_ADRTTM))
		//				+ getZenSpaceTrimString(inMap.getString(UCWK_NTT_KEISHA_ADRRM));
		//}
		//else
		//{				//NULLは空文字に置き換え、全角スペースは除去して連結する
		//	nTTAddress =  getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_STATE_NM))
		//				+ getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_CITY_NM))
		//				+ getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_OAZTSU_NM))
		//				+ getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_AZCHO_NM))
		//				+ getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_BNCHIGO))
		//				+ getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_ADRTTM))
		//				+ getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_ADRRM));
		//}
		//
		nTTAddress =  getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_STATE_NM))
			+ getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_CITY_NM))
			+ getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_OAZTSU_NM))
			+ getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_AZCHO_NM))
			+ getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_BNCHIGO))
			+ getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_ADRTTM))
			+ getZenSpaceTrimString(inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_ADRRM));
		// OM-2014-0003913 MOD END
		return nTTAddress;
	}
	
	/**
	 * 利用場所住所を取得し、スペース除去して返す<br>
	 * @param inMap  入力レコード情報
	 * @param listParamMap  パラメータマップ
	 * @return 利用場所住所文字列
	 * @throws Exception 例外が発生した場合
	 */
	private String getRiyoAddress(JBSbatCommonDBInterface addressRec,HashMap<String,String> listParamMap) throws Exception
	{
		// 後で同番移転自動登録でも利用するため、ここでマッピングしておく
		listParamMap.put(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AD_CD
				, addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AD_CD));
		listParamMap.put(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD
				, addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD));
		listParamMap.put(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM
				, addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM));
		listParamMap.put(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM
				, addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM));
		listParamMap.put(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM
				, addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM));
		listParamMap.put(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM
				, addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM));
		listParamMap.put(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO
				, addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO));
		listParamMap.put(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM
				, addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM));
		listParamMap.put(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM
				, addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM));

		// 利用場所住所連結文字列
		String riyoAddress = "";
		// NULLは空文字に置き換え、全角スペースは除去して連結する
		riyoAddress = getZenSpaceTrimString(addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM))
					+ getZenSpaceTrimString(addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM))
					+ getZenSpaceTrimString(addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM))
					+ getZenSpaceTrimString(addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM))
					+ getZenSpaceTrimString(addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO))
					+ getZenSpaceTrimString(addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM))
					+ getZenSpaceTrimString( addressRec.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM));
		
		return riyoAddress;
	}
	
	/**
	 * 指定された文字列がNULLでない場合は全角スペースを取り除いて返す<br>
	 * NULLの場合は空文字を返す。
	 * @param inputString  入力レコード情報
	 * @return 全角スペース除去文字列
	 * @throws Exception 例外が発生した場合
	 */
	private String getZenSpaceTrimString(String inputString) throws Exception
	{
		String outputString = "";
		
		if(inputString != null)
		{
			outputString = inputString.replaceAll("　","");
		}
		return outputString;
	}
	
	/**
	 * 同番移転自動登録を行う<br>
	 * @param inMap  入力レコード情報
	 * @param listParamMap  パラメータマップ
	 * @throws Exception 例外が発生した場合
	 */
	private void execDobanItenAutoAdd(JBSbatServiceInterfaceMap inMap,HashMap<String,String> listParamMap) throws Exception
	{
		// 同番移転用データマップ
		JBSbatCommonDBInterface dbnItenMap = new JBSbatCommonDBInterface();
		// マッパーによるデータマッピング
		dobanItenAutoAddMapper(inMap,dbnItenMap,listParamMap);
		
		this.db_TU_T_DOBANITEN.insertByPrimaryKeys(dbnItenMap);
	}
	
	/**
	 * 同番移転自動登録のための値のマッパー<br>
	 * @param inMap  入力レコード情報
	 * @throws Exception 例外が発生した場合
	 */
	private void dobanItenAutoAddMapper(JBSbatServiceInterfaceMap inMap
			,JBSbatCommonDBInterface dbnItenMap
			,HashMap<String,String>listParamMap) throws Exception
	{
		// 同番移転番号の払い出し
		String dbnItenNo = JCCOracleSeqUtil.getFormatedNextSeq(super.commonItem.getConnection(), SEQ_DOBANITEN_NO, "", 12);
		// システム年月日時分秒を取得
		String sysDateTimeStamp = JKKBatCommon.getSysDateTimeStamp();
		// 局番の取得
		String kyokuNo = inMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TELNO).substring(0,6);
		// 設置場所住所コードの取得
		String adCd = listParamMap.get(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AD_CD);
		// 申込事業所番号の取得
		String mskmJigshoNo = getMskmJigshoNo(adCd,kyokuNo);
		// サービス契約内訳ステータスの取得
		String svcKeiUcwkStat = inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_STAT);
		// SYSIDの取得
		String sysId = inMap.getString(JBSbatKK_T_SVC_KEI.SYSID);
		// お客様レコードを取得し、契約者電話番号を取得
		JBSbatCommonDBInterface custRec = getCustData(sysId);
		// OM-2014-0003912 DEL START
		// String keishaTypeCd = "";
		// OM-2014-0003912 DEL END
		String keishaTelNo = "";
		if(custRec != null)
		{
			// OM-2014-0003912 DEL START
			//keishaTypeCd = custRec.getString(JBSbatCK_T_CUST.KEISHA_TYPE_CD);
			// OM-2014-0003912 DEL END
			keishaTelNo  = custRec.getString(JBSbatCK_T_CUST.KEISHA_TELNO);
		}

		// 同番移転番号
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.DOBANITEN_NO, dbnItenNo);
		// 世代登録年月日時分秒
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.GENE_ADD_DTM, sysDateTimeStamp);
		// 同番移転ステータス
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.DOBANITEN_STAT, "021");
		// サービス契約内訳番号
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SVC_KEI_UCWK_NO
				, inMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.SVC_KEI_UCWK_NO));
		
		// OM-2014-0003913 MOD START
		//if(JBSbatKKConst.SVC_KEI_STAT_UK_ZM.equals(svcKeiUcwkStat)) 
		//{
		//	// NTT契約者名
		//	dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.NTT_KEISHA_NM
		//			, inMap.getString(UCWK_NTT_KEISHA_NM));
		//	// NTT契約者カナ名
		//	dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.NTT_KSH_KANA
		//			, inMap.getString(UCWK_NTT_KSH_KANA));
		//	
		//}
		//else
		//{
		//	// NTT契約者名
		//	dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.NTT_KEISHA_NM
		//			, inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_NM));
		//	// NTT契約者カナ名
		//	dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.NTT_KSH_KANA
		//			, inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KSH_KANA));
		//}
		// NTT契約者名
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.NTT_KEISHA_NM
				, inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_NM));
		// NTT契約者カナ名
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.NTT_KSH_KANA
				, inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KSH_KANA));
		// OM-2014-0003913 MOD END
		// NTT電話番号
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.NTT_TELNO
				, inMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TELNO));
		// OM-2014-0003912 MOD START
		// 法人個人コード
		//dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.HOJIN_KOJIN_CD , keishaTypeCd);
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.HOJIN_KOJIN_CD , JBSbatKKConst.HOJIN_KOJIN_CD_KOJIN);
		// OM-2014-0003912 MOD END
		// 同番移転可否結果出力対象フラグ
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.DBNITN_KH_RSLT_OPUT_TG_FLG, "0");
		// 同番移転申込年月日
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.DOBANITEN_MSKM_YMD, super.opeDate);
		// 同番移転種別コード(0:KOPT番号 / 1:NTT番号)
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.DOBANITEN_SBT_CD, "1");
		// 同番移転受付年月日
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.DOBANITEN_UK_YMD, super.opeDate);
		// 連絡先電話番号
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.RRKS_TELNO , keishaTelNo);
		// 設置場所住所コード
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_AD_CD , adCd);
		// 設置場所郵便番号
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_PCD
				, listParamMap.get(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD));
		// 設置場所都道府県名
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_STATE_NM
				, listParamMap.get(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM));
		// 設置場所市区町村名
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_CITY_NM
				, listParamMap.get(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM));
		// 設置場所大字通称名
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_OAZTSU_NM
				, listParamMap.get(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM));
		// 設置場所字丁目名
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_AZCHO_NM
				, listParamMap.get(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM));
		// 設置場所番地号
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_BNCHIGO
				, listParamMap.get(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO));
		// 設置場所住所補記・建物名
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_ADRTTM
				, listParamMap.get(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM));
		// 設置場所住所補記・部屋番号
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_ADRRM
				, listParamMap.get(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM));
		// 設置場所住所手動入力フラグ
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_AD_MAN_INPUT_FLG, "0");
		// 設置場所住所確認コード
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_AD_CFM_CD, "0");
		
		//【IT2-2014-0000328】 MOD START
		// 設置場所種別コード
		//dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_SBT_CD, "1");
		
		// 一個建てか集合住宅かの判別（料金グループコードもしくは料金プランコードで判定）
		String prcGrpCd = listParamMap.get(JBSbatKK_T_SVC_KEI.PRC_GRP_CD);
		String pplanCd = listParamMap.get(JBSbatKK_T_SVC_KEI.PPLAN_CD);
		if("02".equals(prcGrpCd) || "PA3101".equals(pplanCd) || "PA3201".equals(pplanCd))//一戸建て
		{
			dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_SBT_CD, "2");
		}
		else if("03".equals(prcGrpCd) || "04".equals(prcGrpCd)//集合住宅（マンション・メゾン）
				|| "PA3102".equals(pplanCd) || "PA3103".equals(pplanCd)	|| "PA3104".equals(pplanCd)
				||"PA3202".equals(pplanCd)  || "PA3203".equals(pplanCd) || "PA3204".equals(pplanCd))
		{
			dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_SBT_CD, "1");
		}
		else
		{
			dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SETPLACE_SBT_CD, "3");
		}
		
		//【IT2-2014-0000328】 MOD END
		
		// 同番移転担当ユーザーID
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.DOBANITEN_TNT_USER_ID, super.batchUserId);
		// 申込事業所番号
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.MSKM_JIGSHO_NO, mskmJigshoNo);
		// 送信回数
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.SEND_CNT, "0");
		// 法人結果出力済フラグ
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.HOJIN_RSLT_OPUT_ZUMI_FLG , "0");
		// 結果リスト出力済フラグ
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.RSLT_LIST_OPUT_ZUMI_FLG, "0");
		// 対応記録連携情報作成済フラグ
		dbnItenMap.setValue(JBSbatTU_T_DOBANITEN.TIOKR_RNK_INF_SKSI_ZM_FLG , "0");
	}
									
	/**
	 * サービス契約内訳番号に紐付く同番移転レコードを返す。<br>
	 * @param svcKeiUcwkNo  サービス契約内訳番号
	 * @return dobanitenRec 登録済の場合は同番移転の対象レコード。レコードがない場合はnull。
	 * @throws Exception 例外が発生した場合
	 */
	private JBSbatCommonDBInterface getDobanItenData(String svcKeiUcwkNo) throws Exception
	{
		// SELECT文の結果レコード
		JBSbatCommonDBInterface dobanitenRec = null;

		String[] param =
		{
				svcKeiUcwkNo
		};
		executeTU_T_DOBANITEN_KK_SELECT_004(param);
		dobanitenRec = db_TU_T_DOBANITEN.selectNext();
		return dobanitenRec;
	}

	/**
	 * サービス契約番号に紐付くネット、もしくは電話サービスの料金プラン名を返す。<br>
	 * @param svcKeiNo  サービス契約番号
	 * @return pplanName ネットもしくは電話の料金プラン名（ネット優先。どちらもない場合はnull）
	 * @throws Exception 例外が発生した場合
	 */
	private JBSbatCommonDBInterface getSvcKeiRec(String svcKeiNo) throws Exception
	{
		// 戻り値のサービス契約レコード
		JBSbatCommonDBInterface svcKeiRec = null;

		String[] param =
		{
				svcKeiNo,
				super.opeDate,
				super.opeDate,
				super.opeDate
		};
		executeKK_T_SVC_KEI_KK_SELECT_309(param);
		
		svcKeiRec = db_KK_T_SVC_KEI.selectNext();
		
		return svcKeiRec;
	}
	
	/**
	 * 異動区分名を返す<br>
	 * @param idoDiv  異動区分
	 * @return idoDivName 異動区分名（存在意しない場合はnull）
	 * @throws Exception 例外が発生した場合
	 */
	private String getIdoDivName(String idoDiv) throws Exception
	{
		// 戻り値の異動区分名
		String idoDivName = null;

		String[] param =
		{
				"CD00576",
				idoDiv,
				super.opeDate,
				super.opeDate
		};
		executeZM_M_CD_NM_KANRI_KK_SELECT_008(param);
		
		JBSbatCommonDBInterface idoDivNameRec = db_ZM_M_CD_NM_KANRI.selectNext();
		if(idoDivNameRec != null)
		{
			idoDivName = idoDivNameRec.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);
		}
		return idoDivName;
	}
	/**
	 * 住所コードと局番に紐付く申込事業所番号を返す。<br>
	 * @param adCd  住所コード
	 * @param kyokuNo  局番
	 * @return mskmJigshoNo 申込事業所番号を返す（存在しない場合はnull）
	 * @throws Exception 例外が発生した場合
	 */
	private String getMskmJigshoNo(String adCd , String kyokuNo) throws Exception
	{
		// 戻り値の申込事業所番号
		String mskmJigshoNo = null;

		String[] param =
		{
				adCd,
				kyokuNo,
				super.opeDate,
				super.opeDate,
				
		};
		executeZM_M_AD_TG_NO_KUKAKU_KK_SELECT_003(param);
		
		JBSbatCommonDBInterface mskmJigshoNoRec = db_ZM_M_AD_TG_NO_KUKAKU.selectNext();
		if(mskmJigshoNoRec != null)
		{
			mskmJigshoNo = mskmJigshoNoRec.getString(JBSbatZM_M_AD_TG_NO_KUKAKU.MSKM_JIGSHO_NO);
		}
		return mskmJigshoNo;
	}
	
	/**
	 * SYSIDに紐付くお客様のカレントレコードを返す。<br>
	 * @param sysId  SYSID
	 * @return custRec  お客様カレントレコード
	 * @throws Exception 例外が発生した場合
	 */
	private JBSbatCommonDBInterface getCustData(String sysId) throws Exception
	{
		// 戻り値のお客様レコード
		JBSbatCommonDBInterface custRec = null;

		String[] param =
		{
				sysId,
				super.opeDate,
				
		};
		executeCK_T_CUST_KK_SELECT_064(param);
		
		custRec = db_CK_T_CUST.selectNext();
		
		return custRec;
	}
	/**
	 * 結果リスト出力のためのJBSbatOutputItemを生成・マッピングして返す<br>
	 * @param inMap  入力レコード情報
	 * @param paramMap  リスト出力に必要なデータのマップ
	 * @return outputBean
	 * @throws Exception 例外が発生した場合
	 */
	private JBSbatOutputItem getListOutputItem(JBSbatServiceInterfaceMap inMap , HashMap<String,String> listParamMap) throws Exception
	{
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();

		// お客さまID（サービス契約番号）
		outmap.setString(LISTOUT_CUST_ID, listParamMap.get(LISTOUT_CUST_ID));
		// 料金プラン名
		outmap.setString(LISTOUT_PPLAN_NM, listParamMap.get(LISTOUT_PPLAN_NM));
		// 電話番号
		outmap.setString(LISTOUT_TELNO, listParamMap.get(LISTOUT_TELNO));
		// 利用場所住所
		outmap.setString(LISTOUT_RIYO_ADDRESS, listParamMap.get(LISTOUT_RIYO_ADDRESS));
		// NTT契約者住所
		outmap.setString(LISTOUT_NTT_KEI_ADDRESS, listParamMap.get(LISTOUT_NTT_KEI_ADDRESS));
		// 異動区分
		outmap.setString(LISTOUT_IDO_DIV, listParamMap.get(LISTOUT_IDO_DIV));
		// 番号ポータビリティの利用場所
		outmap.setString(LISTOUT_BMP_RIYO_BASYO, listParamMap.get(LISTOUT_BMP_RIYO_BASYO));
		// NTT電話番号移転手続き(手続きを誰がやるのか)
		outmap.setString(LISTOUT_NTT_BAN_ITEN_TTDK, listParamMap.get(LISTOUT_NTT_BAN_ITEN_TTDK));
		// 同番移転簡易チェック結果
		outmap.setString(LISTOUT_DBNITN_KOPT_NAI_SKEKKA, listParamMap.get(LISTOUT_DBNITN_KOPT_NAI_SKEKKA));
		// 同番移転自動登録実行有無
		outmap.setString(LISTOUT_DBNITN_JIKO_UM , listParamMap.get(LISTOUT_DBNITN_JIKO_UM)); 
		
		outmap.setOutFlg(true);
		
		outputBean.addOutMapList(outmap);
		
//IT1-2014-0000366 DELETE START
//		// ファイル出力データ件数設定
//		recCnt ++;
//IT1-2014-0000366 DELETE END
		return outputBean;
		
	}
	
//	IT1-2014-0000366 DELETE START 
//	/**
//	 * 電子ファイル管理・ダウンロードファイル管理テーブルに登録します。
//	 * <br>
//	 * @param recCnt レコード件数
//	 * @throws Exception
//	 */
//	
//	private void addEfileKanriDlFileKanri(int recCnt) throws Exception
//	{
//		//電子ファイル登録用パラメータ
//		String fileCd = EFILE_KANRI_FILE_CD;	//ファイルコード
//		String fileDelYmd = JKKStrConst.END_YMD_DEFAULT;	//ファイル削除日付＝なし
//
//		File targetFile = null;
//		if (null != outFilePath1 && 0 < outFilePath1.length())
//		{
//			targetFile = new File(outFilePath1);
//		}//
//
//	// パラメータをチェック
//		if (null != targetFile && targetFile.exists())
//		{
//		// 処理管理番号
//			String trnKanriNo = TRN_KANRI_NO;
//
//			// 電子ファイル登録
//			String[] ret = JCCbatDenshiFileUtil.createDenshiFile(this.commonItem, fileCd, targetFile.getPath(), fileDelYmd);
//
//			super.logPrint.printDebugLog(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.EKKB0110AI, new String[]{ret[0], ret[1]}));
//
//			//ダウンロードファイル登録
//			String[] dlFileParams = new String[]{
//				trnKanriNo,				// 処理管理番号
//				targetFile.getName(),	// ファイル名
//				String.valueOf(recCnt),	// データ件数
//				ret[0],					// 電子ファイル管理番号
//				ret[1]					// 世代登録年月日時分秒
//			};
//			executeZM_T_DL_FILE_KANRI_KK_INSERT_002(dlFileParams);
//		}
//		else
//		{
//			super.commonItem.setErrFlg(true);
//			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0060TE, new String[]{targetFile.getPath()});
//			throw new JBSbatBusinessError(JPCBatchMessageConstant.EKKB0060TE);
//		}
//	}
// IT1-2014-0000366 DELETE END
	/**
	 * 処理済フラグ更新を行う<br>
	 * @param inMap  入力レコード情報
	 * @throws Exception 例外が発生した場合
	 */
	private void execSyoriZmFlgUpdate(JBSbatServiceInterfaceMap inMap , HashMap<String,String> listParamMap) throws Exception
	{
		
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();//条件値マップ
		JBSbatCommonDBInterface valueMap = new JBSbatCommonDBInterface();//設定値マップ
		
		whereMap.setValue(JBSbatKK_T_SVKEIUW_EOH_TEL.SVC_KEI_UCWK_NO
				, inMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.SVC_KEI_UCWK_NO));
		whereMap.setValue(JBSbatKK_T_SVKEIUW_EOH_TEL.GENE_ADD_DTM
				, inMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.GENE_ADD_DTM));
		if("登録".equals(listParamMap.get(LISTOUT_DBNITN_JIKO_UM)))
		{
			// 同番移転登録を行った場合のみ、以下の項目の更新を行う
			valueMap.setValue(JBSbatKK_T_SVKEIUW_EOH_TEL.DOBANITEN_REQ_CTRL_CD, "1");
			valueMap.setValue(JBSbatKK_T_SVKEIUW_EOH_TEL.DOBANITEN_JDG_CD, "0");
		}
		
		valueMap.setValue(JBSbatKK_T_SVKEIUW_EOH_TEL.DBNITN_AT_RNKKH_CST_ZM_FLG, "1");
		
		this.db_KK_T_SVKEIUW_EOH_TEL.updateByPrimaryKeys(whereMap, valueMap);
	}
	
	/**
	 * 同番移転自動登録、リスト出力、フラグ更新3つの処理を全て行う<br>
	 * 同番移転自動登録に関しては条件により登録を行わない場合もある。
	 * @param inMap  入力レコード情報
	 * @param svcKeiUcwkNo  サービス契約内訳番号
	 * @throws Exception 例外が発生した場合
	 */
	private void execDobanItenAutoAddTarget(JBSbatServiceInterfaceMap inMap 
									,HashMap<String,String> listParamMap) throws Exception
	{
		// サービス契約番号に紐付く同番移転のレコードの有無チェック
		JBSbatCommonDBInterface dobanitenRec = getDobanItenData(inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO));
		
		if(dobanitenRec == null)
		{
			// レコードが存在しないので登録を行う
			execDobanItenAutoAdd(inMap,listParamMap);
			// 自動登録完了
			listParamMap.put(LISTOUT_DBNITN_JIKO_UM, "登録");
		}
		else 
		{
			String dobanItenStat = dobanitenRec.getString(JBSbatTU_T_DOBANITEN.DOBANITEN_STAT);
			if(dobanItenStat.equals("021") || dobanItenStat.equals("022"))
			{
			// 同番移転にすでにレコード有り
				listParamMap.put(LISTOUT_DBNITN_JIKO_UM, "同番移転にレコードあり");
			}
			else if(dobanItenStat.equals("023") || dobanItenStat.equals("031") 
					|| dobanItenStat.equals("050") || dobanItenStat.equals("090") )
			{
				// レコードが存在するが、自動登録対象なので登録を行う
				execDobanItenAutoAdd(inMap,listParamMap);
				listParamMap.put(LISTOUT_DBNITN_JIKO_UM, "登録");
			}
		}
	}

	/**
	 * SQLKEY(KK_SELECT_036)でDBアクセス<br>
	 * KK_T_KAISEN_TG_SVKEI_KK_SELECT_036の実行を行います。
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KAISEN_TG_SVKEI_KK_SELECT_036(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		for(Object paramObj:param)
		{
			paramList.setValue(paramObj.toString());
		}
		// DBアクセスを実行します
		db_KK_T_KAISEN_TG_SVKEI.selectBySqlDefine(paramList, KK_T_KAISEN_TG_SVKEI_KK_SELECT_036);
	}
	
	/**
	 * SQLKEY(KK_SELECT_004)でDBアクセス<br>
	 * TU_T_DOBANITEN_KK_SELECT_004の実行を行います。
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeTU_T_DOBANITEN_KK_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		for(Object paramObj:param)
		{
			paramList.setValue(paramObj.toString());
		}
		// DBアクセスを実行します
		this.db_TU_T_DOBANITEN.selectBySqlDefine(paramList, TU_T_DOBANITEN_KK_SELECT_004);
	}
	
	/**
	 * SQLKEY(KK_SELECT_309)でDBアクセス<br>
	 * KK_T_SVC_KEI_KK_SELECT_309 の実行を行います。
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_309 (Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		for(Object paramObj:param)
		{
			paramList.setValue(paramObj.toString());
		}
		// DBアクセスを実行します
		this.db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_309);
	}
	
	/**
	 * SQLKEY(SELECT_064)でDBアクセス<br>
	 * KK_T_CK_T_CUST_KK_SELECT_064 の実行を行います。
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_KK_SELECT_064(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		for(Object paramObj:param)
		{
			paramList.setValue(paramObj.toString());
		}
		// DBアクセスを実行します
		this.db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_KK_SELECT_064);
	}
	
	
	
	/**
	 * SQLKEY(KK_SELECT_003)でDBアクセス<br>
	 * ZM_M_AD_TG_NO_KUKAKU_KK_SELECT_003 の実行を行います。
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_AD_TG_NO_KUKAKU_KK_SELECT_003 (Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		for(Object paramObj:param)
		{
			paramList.setValue(paramObj.toString());
		}
		// DBアクセスを実行します
		this.db_ZM_M_AD_TG_NO_KUKAKU.selectBySqlDefine(paramList, ZM_M_AD_TG_NO_KUKAKU_KK_SELECT_003);
	}
	
	/**
	 * SQLKEY(KK_SELECT_008)でDBアクセス<br>
	 * ZM_M_CD_NM_KANRI_KK_SELECT_008 の実行を行います。
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_CD_NM_KANRI_KK_SELECT_008(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		for(Object paramObj:param)
		{
			paramList.setValue(paramObj.toString());
		}
		// DBアクセスを実行します
		this.db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_KK_SELECT_008);
	}

	// 20160121 OM-2015-0003273 性能改善 ADD START
	/**
	 * SQLKEY(KK_SELECT_127)でDBアクセス<br>
	 * KK_T_SVC_KEI_UCWK_KK_SELECT_127 の実行を行います。
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_UCWK_KK_SELECT_127(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		for(Object paramObj:param)
		{
			paramList.setValue(paramObj.toString());
		}
		// DBアクセスを実行します
		this.db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KK_SELECT_127);
	}
	// 20160121 OM-2015-0003273 性能改善 ADD END

//	IT1-2014-0000366 DELETE START
//	/**
//	 * SQLKEY(KK_INSERT_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_T_DL_FILE_KANRI_KK_INSERT_002(Object[] param) throws Exception
//	{
//		// バイント変数のリストを生成します
//		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//		for(Object paramObj:param)
//		{
//			paramList.setValue(paramObj.toString());
//		}
//		// DBアクセスを実行します
//		db_ZM_T_DL_FILE_KANRI.executeBySqlDefine(paramList, ZM_T_DL_FILE_KANRI_KK_INSERT_002);
//	}
//	IT1-2014-0000366 DELETE END
	/**
	 * ヘッダ部の出力をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * ヘッダ部の出力処理をします。<br>
	 *
	 * </pre>
	 * <p>
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void writeHeader() throws Exception
	{
		JBSbatOutputFileUtil out_obj = super.commonItem.getOutPutFile();
		StringBuffer header = new StringBuffer();

		header.append("\"お客さまID\",");
		header.append("\"料金プラン名\",");
		header.append("\"電話番号\",");
		header.append("\"利用場所住所\",");
		header.append("\"NTT契約者住所\",");
		header.append("\"異動区分\",");
		header.append("\"番号ポータビリティの利用場所\",");
		header.append("\"NTT電話番号移転手続き\",");
		header.append("\"同番移転簡易チェック結果\",");
		header.append("\"同番移転登録実行有無\"");
		
		// ヘッダ部の出力を行います。
		out_obj.write(header.toString());
	}
}
