/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKBmpPreTchFileSksi
*	ソースファイル名	：JBSbatKKBmpPreTchFileSksi.java
*	作成者				：富士通　
*	作成日				：2011年05月26日
*＜機能概要＞
*　番ポなし番号事前通知ファイル作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00		2011/05/26	富士通		新規作成
*	v3.00		2012/04/10	FJ)			加入御礼発行対応
*	v3.01		2012/07/13	FJ)井熊		【TAI-2012-0000043】SQLカレント取得対応
*   v4.00		2012/08/01	FJ)井熊		【ANK-0495-00-00】フロント繋がり対応(電話番号事前通知)
*	v4.01		2012/01/23	FJ)井熊		【ST2-2013-0000220】ディレイド処理依頼確認実装
*	v4.02		2012/02/13	FJ)鷲塚		【IT1-2013-0000266】守口倉庫I/F対応(トレーラレコード出力)
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCbatShoriIraiUtil;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFE117;
import eo.business.util.file.JBSbatKKIFM005;
import eo.business.util.table.JBSbatKK_T_KANUORESO_HAKKO;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JZMAdEdit;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKBmpPreTchFileSksi extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** レコード数 */
	private int rec_count = 0;
	/** 削除ファイルパス */
	private String[] del_file_paths = null;
	/** ファイルパス区切り文字 */
	private static final String SEP_STR = ";";

	/** 有無（無） .*/
	private static final String UM_MU = "0";
	/** 有無（有） .*/
	private static final String UM_U = "1";
	/** ディレイド処理依頼有無フラグ */
	private String dlyd_um_flg = UM_MU;
	/** ディレイドフラグファイル .*/
	private String createCntFile = null;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// FREE項目から削除用ファイルパスを取得する。
		if(super.freeItem != null && !"".equals(super.freeItem))
		{
			this.del_file_paths = super.freeItem.split(SEP_STR);
		}
		else
		{
			// エラーフラグ設定
			super.commonItem.setErrFlg(true);
			// システムエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0060TE,
					new String[]{"FREEパラメータファイルPATH"});
		}
		
		if(this.del_file_paths[2] != null && !"".equals(this.del_file_paths[2])
				&& (this.del_file_paths[3] != null && !"".equals(this.del_file_paths[3])))
		{
			// ディレイドジョブＩＤ
			String job_id = this.del_file_paths[2];
			// ディレイドフラグファイルパス
			this.createCntFile = this.del_file_paths[3];
			// ディレイド処理依頼取得
			ArrayList<HashMap<String, Object>> arrayList = JCCbatShoriIraiUtil.getShoriIraiInfo(super.commonItem, job_id);
			if(arrayList != null)
			{
				// ディレイド依頼があるのでフラグを立てる
				this.dlyd_um_flg = UM_U;
			}
			else
			{
				// ディレイド依頼がないのでフラグを折る
				this.dlyd_um_flg = UM_MU;
			}
		}
		else
		{
			// 親シェルのジョブIDが渡されてきていない
			throw new JBSbatBusinessException("EKKB0740CE", new String[]{"フリーパラメータ異常"});
		}

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception 各種エラー
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// ディレイド処理依頼に処理依頼がない場合
		if(UM_MU.equals(this.dlyd_um_flg))
		{
			// 処理をスキップする
			return null;
		}
		
		// 単項目チェック
		if(!this.isSingleCheckKK_T_KANUORESO_HAKKO_KK_SELECT_003(inMap.getMap(), this.getItemvalueMap()))
		{
			// エラーフラグ設定
			super.commonItem.setErrFlg(true);
			// システムエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0060TE,
					new String[]{"加入御礼書発行：番ポなし番号事前通知データ"});
		}
		
		// ファイル出力アイテム
		JBSbatOutputItem outputItem = new JBSbatOutputItem();

		// 番ポなし番号事前通知ファイルへ出力
		JBSbatServiceInterfaceMap outMapKKIFE117 = new JBSbatServiceInterfaceMap();
		this.executeSetDataKKIFE117(inMap, outMapKKIFE117);
		outMapKKIFE117.setOutFlg(true);
		outputItem.addOutMapList(outMapKKIFE117);

		// 番ポなし番号事前通知抽出結果更新ファイルへ出力
		JBSbatServiceInterfaceMap outMapKKIFM005 = new JBSbatServiceInterfaceMap();
		this.executeSetDataKKIFM005(inMap, outMapKKIFM005);
		outMapKKIFM005.setOutFlg(true);
		outputItem.addOutMapList_2(outMapKKIFM005);
		
		this.rec_count++;
		
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		// ディレイド処理依頼結果のフラグファイルを作成する
		JBSbatOutputFileUtil cntFile = new JBSbatOutputFileUtil(this.createCntFile);
		cntFile.setEncode(JKKBatConst.SJIS);
		cntFile.setLine(JKKBatConst.S_LINE_SEPARAOR_LF);
		cntFile.createWriter();
		StringBuffer sb = new StringBuffer();
		if(UM_U.equals(this.dlyd_um_flg))
		{
			// ディレイド処理依頼がある
			sb.append(String.valueOf(UM_U));
			cntFile.write(sb.toString());
			cntFile.close();
			
			// IT1-2013-0000266 2013/02/13 DEL START
//			// 抽出レコードが０件の場合はエラーとする
//			if(rec_count == 0)
//			{
//				// システムエラーとする
//				throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0150JE,
//						new String[]{"加入御礼発行"});
//			}
			// IT1-2013-0000266 2013/02/13 DEL END
//				super.commonItem.getOutPutFile().close();
//				super.commonItem.getOutPutFile2().close();
//				
//				// 中間ファイルをすべて削除する
//				File delFile = null;
//				String[] files = new String[]{this.del_file_paths[0], this.del_file_paths[1]};
//				for(String fName : files)
//				{
//					delFile = new File(fName);
//					
//					super.logPrint.printDebugLog("処理対象ファイル(" + delFile.getPath() + ")");
//					
//					if(delFile.exists())
//					{
//						// ファイルを削除
//						super.logPrint.printDebugLog("ファイル削除処理を実施します。");
//						
//						delFile.delete();
//					}
//					else
//					{
//						super.logPrint.printDebugLog("ファイルが存在しないため削除処理を実施しません。");
//						// エラーログ出力
//						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0130CE,
//								new String[] {super.freeItem});
//						// エラーフラグ設定
//						super.commonItem.setErrFlg(true);
//					}
//				}
		}
		else
		{
			// ディレイド処理依頼がない
			sb.append(String.valueOf(UM_MU));
			cntFile.write(sb.toString());
			cntFile.close();
		}
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 *入力情報（加入御礼書発行）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 DB-KK_T_KANUORESO_HAKKO-.SVC_KEI_NO			加入御礼書発行.サービス契約番号
	 *			 DB-KK_T_KANUORESO_HAKKO-.MSKMSHO_NO			加入御礼書発行.申込書番号
	 *			 DB-KK_T_KANUORESO_HAKKO-.KEISHA_TYPE_CD			加入御礼書発行.契約者タイプコード
	 *			 DB-KK_T_KANUORESO_HAKKO-.KEISHA_PCD			加入御礼書発行.契約者郵便番号
	 *			 DB-KK_T_KANUORESO_HAKKO-.KEISHA_BNCHIGO			加入御礼書発行.契約者番地号
	 *			 DB-KK_T_KANUORESO_HAKKO-.CUST_KANA			加入御礼書発行.お客様カナ名
	 *			 DB-KK_T_KANUORESO_HAKKO-.CUST_NM			加入御礼書発行.お客様名
	 *			 DB-KK_T_KANUORESO_HAKKO-.KAISEN_PLACE_PCD			加入御礼書発行.回線場所郵便番号
	 *			 DB-KK_T_KANUORESO_HAKKO-.KEISHA_BNCHIGO			加入御礼書発行.契約者番地号
	 *			 DB-KK_T_KANUORESO_HAKKO-.KOPT_TELNO_1			加入御礼書発行.ＫＯＰＴ電話番号１
	 *			 DB-KK_T_KANUORESO_HAKKO-.BMP_UM_1			加入御礼書発行.番号ポータビリティ有無１
	 *			 DB-KK_T_KANUORESO_HAKKO-.LETTER_SBT_CD			加入御礼書発行.レター種別コード
	 *			 DB-KK_T_KANUORESO_HAKKO-.TEL_SVKEIUW_SHOSA_ZM_FLG_1			加入御礼書発行.電話サービス契約内訳照査済フラグ１
	 *			 DB-KK_T_KANUORESO_HAKKO-.DATA_CHSHT_DTM			加入御礼書発行.データ抽出年月日時分秒
	 *			 DB-KK_T_KANUORESO_HAKKO-.KISN_PLC_AD_MI_FIX_FLG			加入御礼書発行.回線場所住所未確定フラグ
	 *			 DB-KK_T_KANUORESO_HAKKO-.SVC_KEI_NO			加入御礼書発行.サービス契約番号
	 *			 DB-KK_T_KANUORESO_HAKKO-.IDO_DIV			加入御礼書発行.異動区分
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	@SuppressWarnings({ "unchecked" })
	private boolean isSingleCheckKK_T_KANUORESO_HAKKO_KK_SELECT_003(HashMap rsMap, HashMap itemvalueMap)
	{
		// 単項目チェックを行います
		String strValue = null;

		// サービス契約番号項目チェック
		strValue = (String)rsMap.get("SVC_KEI_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.SVC_KEI_NO")});
			return false;
		}

		// 申込書番号項目チェック
		strValue = (String)rsMap.get("MSKMSHO_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.MSKMSHO_NO")});
			return false;
		}

		// 契約者タイプコード項目チェック
		strValue = (String)rsMap.get("KEISHA_TYPE_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.KEISHA_TYPE_CD")});
			return false;
		}

		// 契約者郵便番号項目チェック
		strValue = (String)rsMap.get("KEISHA_PCD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.KEISHA_PCD")});
			return false;
		}

		// 契約者番地号項目チェック
		strValue = (String)rsMap.get("KEISHA_BNCHIGO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.KEISHA_BNCHIGO")});
			return false;
		}

		// お客様カナ名項目チェック
		strValue = (String)rsMap.get("CUST_KANA");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.CUST_KANA")});
			return false;
		}

		// お客様名項目チェック
		strValue = (String)rsMap.get("CUST_NM");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.CUST_NM")});
			return false;
		}

		// 回線場所郵便番号項目チェック
		strValue = (String)rsMap.get("KAISEN_PLACE_PCD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.KAISEN_PLACE_PCD")});
			return false;
		}

		// 回線場所番地号項目チェック
		strValue = (String)rsMap.get("KAISEN_PLACE_BNCHIGO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.KEISHA_BNCHIGO")});
			return false;
		}

		// ＫＯＰＴ電話番号１項目チェック
		strValue = (String)rsMap.get("KOPT_TELNO_1");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.KOPT_TELNO_1")});
			return false;
		}

		// 番号ポータビリティ有無１項目チェック
		strValue = (String)rsMap.get("BMP_UM_1");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.BMP_UM_1")});
			return false;
		}

		// レター種別コード項目チェック
		strValue = (String)rsMap.get("LETTER_SBT_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.LETTER_SBT_CD")});
			return false;
		}

		// 電話サービス契約内訳照査済フラグ１項目チェック
		strValue = (String)rsMap.get("TEL_SVKEIUW_SHOSA_ZM_FLG_1");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.TEL_SVKEIUW_SHOSA_ZM_FLG_1")});
			return false;
		}

		// データ抽出年月日時分秒項目チェック
		strValue = (String)rsMap.get("DATA_CHSHT_DTM");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.DATA_CHSHT_DTM")});
			return false;
		}

		// 回線場所住所未確定フラグ項目チェック
		strValue = (String)rsMap.get("KISN_PLC_AD_MI_FIX_FLG");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.KISN_PLC_AD_MI_FIX_FLG")});
			return false;
		}

		// 異動区分項目チェック
		strValue = (String)rsMap.get("IDO_DIV");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KANUORESO_HAKKO-.IDO_DIV")});
			return false;
		}

		return true;
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 中間ファイルに抽出後更新用のデータをセット
	 * 
	 * @param inMap 入力レコード
	 * @param outMapKKIFM005 中間ファイル
	 * @throws Exception 各種エラー
	 */
	private void executeSetDataKKIFM005(JBSbatServiceInterfaceMap inMap, JBSbatServiceInterfaceMap outMapKKIFM005) throws Exception
	{
		// 加入御礼書発行番号
		outMapKKIFM005.setString(JBSbatKKIFM005.KANUORESO_HAKKO_NO, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KANUORESO_HAKKO_NO));
		// サービス契約番号
		outMapKKIFM005.setString(JBSbatKKIFM005.SVC_KEI_NO, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.SVC_KEI_NO));
		// 異動区分
		outMapKKIFM005.setString(JBSbatKKIFM005.IDO_DIV, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.IDO_DIV));
	}

	/**
	 * 外部連携ファイルへデータをセットする
	 * 
	 * @param inMap レコードデータ
	 * @param outMapKKIFE117 外部連携
	 * @throws Exception 各種エラー
	 */
	private void executeSetDataKKIFE117(JBSbatServiceInterfaceMap inMap, JBSbatServiceInterfaceMap outMapKKIFE117) throws Exception
	{
		// サービス契約番号
		outMapKKIFE117.setString(JBSbatKKIFE117.SVC_KEI_NO, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.SVC_KEI_NO));
		// 申込番号  抽出元は申込明細.申込書明細番号
		outMapKKIFE117.setString(JBSbatKKIFE117.MSKMSHO_NO, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.MSKMSHO_NO));
		// 契約者タイプ
		outMapKKIFE117.setString(JBSbatKKIFE117.KEISHA_TYPE_CD, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KEISHA_TYPE_CD));
		// 契約者郵便番号
		outMapKKIFE117.setString(JBSbatKKIFE117.RRKS_PCD, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KEISHA_PCD));
		// お客様カナ名
		outMapKKIFE117.setString(JBSbatKKIFE117.CUST_KANA, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.CUST_KANA));
		// お客様名
		outMapKKIFE117.setString(JBSbatKKIFE117.CUST_NM, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.CUST_NM));
		// 回線場所郵便番号
		outMapKKIFE117.setString(JBSbatKKIFE117.KAISEN_PLACE_PCD, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KAISEN_PLACE_PCD));
		// eo光電話番号１
		outMapKKIFE117.setString(JBSbatKKIFE117.TELNO1, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KOPT_TELNO_1));
		// 電話番号１番ポ有無
		outMapKKIFE117.setString(JBSbatKKIFE117.BMP_UM1, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.BMP_UM_1));
		// eo光電話番号２
		outMapKKIFE117.setString(JBSbatKKIFE117.TELNO2, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KOPT_TELNO_2));
		// 電話番号２番ポ有無
		outMapKKIFE117.setString(JBSbatKKIFE117.BMP_UM2, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.BMP_UM_2));
		// 申込区分
		outMapKKIFE117.setString(JBSbatKKIFE117.MSKM_DIV, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.LETTER_SBT_CD));
		// 光電話照査済区分１
		outMapKKIFE117.setString(JBSbatKKIFE117.SHOSA_DIV1, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.TEL_SVKEIUW_SHOSA_ZM_FLG_1));
		// 光電話照査済区分２
		outMapKKIFE117.setString(JBSbatKKIFE117.SHOSA_DIV2, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.TEL_SVKEIUW_SHOSA_ZM_FLG_2));
		
		// 抽出年月日時分秒を年月日と時分秒に分解して格納
		String data_ymd = inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.DATA_CHSHT_DTM);
		if(data_ymd != null && JKKBatCommon.isDayHour1(data_ymd))
		{
			// 抽出日
			outMapKKIFE117.setString(JBSbatKKIFE117.CHSHT_YMD, data_ymd.substring(0, 8));
			// 抽出時刻
			outMapKKIFE117.setString(JBSbatKKIFE117.CHSHT_TM, data_ymd.substring(8, 14));
		}
		else
		{
			// 桁数エラー
			super.logPrint.printDebugLog("抽出年月日時分秒のフォーマットが日付ではない");
			// エラーログ出力
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0730TE,
					new String[] {data_ymd});
			// エラーフラグ設定
			super.commonItem.setErrFlg(true);
			
			// システムエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0730TE,
					new String[]{JBSbatKK_T_KANUORESO_HAKKO.DATA_CHSHT_DTM});
		}
		
		// 番地未確定フラグ
		outMapKKIFE117.setString(JBSbatKKIFE117.KISN_PLC_AD_FIX_FLG, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KISN_PLC_AD_MI_FIX_FLG));
		
		// 各住所名寄せ対応（契約者住所、回線場所住所）
		this.getNayoseResult(inMap, outMapKKIFE117);
	}

	/**
	 * 住所編集部品を使って名寄せ対応
	 * 
	 * @param inMap 抽出データ
	 * @param outMap マッピングデータ
	 * @throws Exception 各種エラー
	 */
	private void getNayoseResult(JBSbatServiceInterfaceMap inMap, JBSbatServiceInterfaceMap outMap) throws Exception
	{
		// 契約者住所
		String[] addObj = JZMAdEdit.getPtn07(
				inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KEISHA_STATE_NM)
				, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KEISHA_CITY_NM)
				, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KEISHA_OAZTSU_NM)
				, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KEISHA_AZCHO_NM)
				, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KEISHA_BNCHIGO)
				, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KEISHA_ADRTTM)
				, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KEISHA_ADRRM));
		int i = 0;
		// 契約者都道府県
		outMap.setString(JBSbatKKIFE117.RRKS_STATE_NM, addObj[i++]);
		// 契約者市区町村名
		outMap.setString(JBSbatKKIFE117.RRKS_CITY_NM, addObj[i++]);
		// 契約者大字通称名
		outMap.setString(JBSbatKKIFE117.RRKS_OAZTSU_NM, addObj[i++]);
		// 契約者字町目名
		outMap.setString(JBSbatKKIFE117.RRKS_AZCHO_NM, addObj[i++]);
		// 契約者番地号
		outMap.setString(JBSbatKKIFE117.RRKS_BNCHIGO, addObj[i++]);
		// 契約者補記・建物名
		outMap.setString(JBSbatKKIFE117.RRKS_ADRTTM, addObj[i++]);
		// 契約者補記・部屋番号
		outMap.setString(JBSbatKKIFE117.RRKS_ADRRM, addObj[i]);

		// 回線場所住所
		addObj = JZMAdEdit.getPtn07(
				inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KAISEN_PLACE_STATE_NM)
				, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KAISEN_PLACE_CITY_NM)
				, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KAISEN_PLACE_OAZTSU_NM)
				, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KAISEN_PLACE_AZCHO_NM)
				, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KAISEN_PLACE_BNCHIGO)
				, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KAISEN_PLACE_ADRTTM)
				, inMap.getString(JBSbatKK_T_KANUORESO_HAKKO.KAISEN_PLACE_ADRRM));
		i = 0;
		// 回線場所都道府県名
		outMap.setString(JBSbatKKIFE117.KAISEN_PLACE_STATE_NM, addObj[i++]);
		// 回線場所市区町村名
		outMap.setString(JBSbatKKIFE117.KAISEN_PLACE_CITY_NM, addObj[i++]);
		// 回線場所大字通称名
		outMap.setString(JBSbatKKIFE117.KAISEN_PLACE_OAZTSU_NM, addObj[i++]);
		// 回線場所字丁目名
		outMap.setString(JBSbatKKIFE117.KAISEN_PLACE_AZCHO_NM, addObj[i++]);
		// 回線場所番地号
		outMap.setString(JBSbatKKIFE117.KAISEN_PLACE_BNCHIGO, addObj[i++]);
		// 回線場所補記・建物名
		outMap.setString(JBSbatKKIFE117.KAISEN_PLACE_ADRTTM, addObj[i++]);
		// 回線場所補記・部屋番号
		outMap.setString(JBSbatKKIFE117.KAISEN_PLACE_ADRRM, addObj[i]);
	}

	/**
	 * エラーメッセージに関する項目値を格納されたHashMap<String, String>を生成します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.エラーメッセージに関する項目値を格納されたHashMapを生成する。<br>
	 * 2.エラーメッセージに関する項目値を格納されたHashMapに値を設定する。<br>
	 * </pre>
	 * <p>
	 * @return itemvalueMap エラーメッセージに関する項目値を格納されたHashMap
	 */
	private HashMap<String, String> getItemvalueMap()
	{
		// エラーメッセージに関する項目値が格納されたHashMapを設定
		HashMap<String, String> itemvalueMap = new HashMap<String, String>();
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.SVC_KEI_NO", "加入御礼書発行.サービス契約番号");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.MSKMSHO_NO", "加入御礼書発行.申込書番号");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.KEISHA_TYPE_CD", "加入御礼書発行.契約者タイプコード");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.KEISHA_PCD", "加入御礼書発行.契約者郵便番号");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.KEISHA_BNCHIGO", "加入御礼書発行.契約者番地号");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.CUST_KANA", "加入御礼書発行.お客様カナ名");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.CUST_NM", "加入御礼書発行.お客様名");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.KAISEN_PLACE_PCD", "加入御礼書発行.回線場所郵便番号");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.KEISHA_BNCHIGO", "加入御礼書発行.契約者番地号");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.KOPT_TELNO_1", "加入御礼書発行.ＫＯＰＴ電話番号１");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.BMP_UM_1", "加入御礼書発行.番号ポータビリティ有無１");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.LETTER_SBT_CD", "加入御礼書発行.レター種別コード");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.TEL_SVKEIUW_SHOSA_ZM_FLG_1", "加入御礼書発行.電話サービス契約内訳照査済フラグ１");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.DATA_CHSHT_DTM", "加入御礼書発行.データ抽出年月日時分秒");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.KISN_PLC_AD_MI_FIX_FLG", "加入御礼書発行.回線場所住所未確定フラグ");
		itemvalueMap.put("DB-KK_T_KANUORESO_HAKKO-.IDO_DIV", "加入御礼書発行.異動区分");
		return itemvalueMap;
	}
}
