/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom                        *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKHikkoshiFixIfKojin
*	ソースファイル名	：JBSbatKKHikkoshiFixIfKojin.java
*	作成者				：富士通　
*	作成日				：2011年09月02日
*＜機能概要＞
*　引越確定情報抽出_個人部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/02  倉上		新規作成
*	v3.00.00	2012/06/26   FJ)藤本	【SGY-2012-0000037】住所変更対応
*	v3.01.00	2012/08/10   FJ)藤本	【ST2-2012-0001503】住所部品の戻り値のNullチェック追加
*	v3.02.00	2012/09/24   FJ)藤本	【ST2-2012-0001714】運用日の前日を抽出するように修正
*	v3.03.00	2012/10/26   FJ)藤本	【ST1-2012-0000713】運用日で抽出するように修正
*	v3.04.00	2012/11/07   FJ)藤本	【IT2-2012-0001652】個人が存在しない場合はエラーとしない
*	v4.00.00	2013/01/17   FJ)団		【ST2-2013-0000113】連携ファイル制御で範囲指定するよう修正
*	v4.01.00	2013/02/22   FJ)柳		【ST1-2013-0000335】お客様情報変更対応
*	v4.02.00	2013/03/19	FJ)石原		【IT1-2013-0000498】システムエラー対処の横展開
*	v4.03.00	2013/03/22   FJ)柳		【IT1-2013-0000498】対応
*	v4.03.01	2013/03/25   FJ)柳		【ST4-2013-0000243】性能改善
*	v4.04.00	2013/03/27   FJ)藤本	【ST1-2013-0000499】対応
*	v5.00.00	2013/05/01   FJ)団		【IT1-2013-0001109】品質向上
*	v5.00.01	2013/06/26   FJ)藤本	【ST4-2013-0000481】品質向上
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM043;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatCK_T_RRKS;
import eo.business.util.table.JBSbatKK_T_ADCHG_DTL;
import eo.business.util.table.JBSbatKK_T_KAISEN_TG_SVKEI;
import eo.business.util.table.JBSbatKK_T_PRG;
import eo.business.util.table.JBSbatKK_T_RNKI_FILE_CTRL;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JZMAdOutputEdit;
import eo.framework.application.JBSbatBusinessException;
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;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKHikkoshiFixIfKojin extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(連携ファイル制御)*/
	private static final String D_TBL_NAME_KK_T_RNKI_FILE_CTRL = "KK_T_RNKI_FILE_CTRL";

	/** テーブル(サービス契約)*/
	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_KK_T_ADCHG_DTL = "KK_T_ADCHG_DTL";

	/** SQL定義キー(KK_SELECT_183)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_183 = "KK_SELECT_183";
	
	/** SQL定義キー(KK_SELECT_244)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_244 = "KK_SELECT_244";
	
	/** SQL定義キー(KK_SELECT_245)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_245 = "KK_SELECT_245";

	/** SQL定義キー(KK_SELECT_009)*/
	private static final String CK_T_CUST_KK_SELECT_009 = "KK_SELECT_009";
	
	/** SQL定義キー(KK_SELECT_017)*/
	private static final String KK_T_ADCHG_DTL_KK_SELECT_017 = "KK_SELECT_017";

	/** テーブルアクセスクラス(連携ファイル制御)*/
	private JBSbatSQLAccess db_KK_T_RNKI_FILE_CTRL = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	
	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_244= null;
	
	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_245= null;

	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;
	
	/** テーブルアクセスクラス(住所変更明細)*/
	private JBSbatSQLAccess db_KK_T_ADCHG_DTL = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 出力元 */
	private static final String JOB_ID = "EO20G0160J0";
	
	/** 物理バッチID（KKPRC01601）*/
	private static final String BAT_ID = "KKPRC01601";
	
	/** ファイルID（KKIFE044）*/
	private static final String FILE_ID = "KKIFE044  ";
	
	/** 局コード */
	private static final String KYOKU_CODE = "11";
	
	/** 空白*/
	private static final String SPACE = "";
	
	/** 料金コード*/
	private static final String RYOKIN_PLAN_CODE = "041";
	
	/** 電障コード（固定値）*/
	private static final String DENSYO_CODE = "9999999999";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_RNKI_FILE_CTRL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_RNKI_FILE_CTRL);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_SVC_KEI_244 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_SVC_KEI_245 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_KK_T_ADCHG_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ADCHG_DTL);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		super.logPrint.printDebugLog("execute_START");
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		JBSbatCommonDBInterface db_map = null;
		String znkiJssiTimestamp = "";

		// 連携ファイル制御を検索します。
		String[] para1 = {BAT_ID, FILE_ID};
		db_map = executeKK_T_RNKI_FILE_CTRL_PKSELECT(para1);
		// 前回実施日が取得できた場合
		if (null != db_map)
		{
			znkiJssiTimestamp = JBSbatStringUtil.Rtrim(db_map.getString(JBSbatKK_T_RNKI_FILE_CTRL.ZNKI_TRAN_RUN_DTM));
		}
		// 前回実施日が取得できなかった場合、バッチ運用日-1日を「前回運用日」とします。
		if("".equals(znkiJssiTimestamp))
		{
			znkiJssiTimestamp = JBSbatDateUtil.adjustDate(super.opeDate, -1) + "000000000";
		}
		
		// 抽出開始タイムスタンプ
		String searhTimeStamp = this.getSearchTimeStamp();
		
		// 対象となるサービス契約の検索を行います。(住所変更確定)
		String[] para2 = {znkiJssiTimestamp, searhTimeStamp, super.opeDate, super.opeDate};
		this.executeKK_T_SVC_KEI_KK_SELECT_183(para2);
		JBSbatCommonDBInterface svcKeiResult = db_KK_T_SVC_KEI.selectNext();
		if(null == svcKeiResult)
		{
			super.logPrint.printDebugLog("異動日時＞「" + znkiJssiTimestamp + "」、異動日時＜＝「" + searhTimeStamp + "」の住所変更確定情報の検索結果がありませんでした。");
		}
		else
		{
			while(null != svcKeiResult)
			{
				
				// 入出力インターフェースオブジェクトを生成(異動情報結果ファイル用)
				JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
				
				// お客様（個人）情報を設定します。
				boolean result = setCustInfo(svcKeiResult, outmap);
				
				if (result)
				{
					// 初期検索で取得した異動情報を異動情報ファイル（etv１）ファイルに設定します。
					setIdoInfo(svcKeiResult, outmap);
					
					//出力フラグを設定
					outmap.setOutFlg(true);
					
					//出力共通電文に入出力インターフェースを設定する。
					outputBean.addOutMapList(outmap);
				}
				else
				{
					// 入出力インターフェースオブジェクトを生成(異動情報結果ファイル用)
					JBSbatServiceInterfaceMap outmap1 = new JBSbatServiceInterfaceMap();
					
					// 初期検索で取得した異動情報を異動情報ファイル（etv１）ファイルに設定します。
					setIdoInfo(svcKeiResult, outmap1);
					
					//出力フラグを設定
					outmap1.setOutFlg(true);
					
					//出力共通電文に入出力インターフェースを設定する。
					outputBean.addOutMapList_2(outmap1);
				}
				svcKeiResult = db_KK_T_SVC_KEI.selectNext();
			}
		}
	
		// 対象となるサービス契約の検索を行います。（お客様情報変更用）
		// アンロード処理にて抽出された中間ファイルを読み込む。
		// （ネット、電話、テレビ（KCNのみ）で進捗より連携異動区分「06000」の異動があったデータのみ）
		HashMap<String,String> svckeinoMap = new HashMap<String,String>();
		HashMap<String,String> sysIdMap = new HashMap<String,String>();
		BufferedReader in_reader = null;
		String[] free_item = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);
		String in_file_nm = free_item[0];
		
		try
		{
			// 入力ファイルクラスを生成します。
			in_reader = new BufferedReader(new InputStreamReader(new FileInputStream(in_file_nm)));
			
			// ファイルが終了するまで読込みを繰り返します
			while (in_reader.ready())
			{
				String[] data = in_reader.readLine().split(",");
				String sysId = JBSbatStringUtil.Rtrim(data[1].replace("\"", ""));
				String svcKeiNo = JBSbatStringUtil.Rtrim(data[0].replace("\"", ""));
				if(sysId == null)
				{
					continue;
				}
				
				//sysidを一意にしてマップに保存
				sysIdMap.put(sysId, sysId);
				//サービス契約番号はマップで保持
				svckeinoMap.put(svcKeiNo, svcKeiNo);
			}
			in_reader.close();
		}
		catch(IOException ioe)
		{
			// ファイル未存在
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0020CE, new String[]{in_file_nm});
		}
		finally
		{
			if (in_reader != null)
			{
				in_reader.close();
			}
		}
		
		//SYSID分繰り返して対象サービス契約を取得
		Iterator<String> iterator = sysIdMap.keySet().iterator();
		// mapの件数分繰り返す
		while (iterator.hasNext()) 
		{
			// SYSIDの取得
			String key = (String)iterator.next();
			String sysId = (String)sysIdMap.get(key);
			
			// KCNを持つサービス契約回線内訳番号を保持するマップ
			HashMap<String,String> svcKeiKsUwNoMap = new HashMap<String,String>();
			
			// SYSIDとサービス契約番号取得
			// SYSIDを元にKCNと同じ回線に紐づくサービス契約すべてを取得する。
			String[] param2 = {super.opeDate,sysId, super.opeDate, super.opeDate};
			this.executeKK_T_SVC_KEI_KK_SELECT_244(param2);
			ArrayList<JBSbatCommonDBInterface> tempList = new ArrayList<JBSbatCommonDBInterface>();
			JBSbatCommonDBInterface result_244 = db_KK_T_SVC_KEI_244.selectNext();
			
			if(null != result_244)
			{	
				
				while(null != result_244)
				{
					
					String svcCd = JBSbatStringUtil.Rtrim(result_244.getString((JBSbatKK_T_SVC_KEI.SVC_CD)));
					String prgGrpCd = JBSbatStringUtil.Rtrim(result_244.getString((JBSbatKK_T_SVC_KEI.PRC_GRP_CD)));
					String svcKeiKaisenUwNo = JBSbatStringUtil.Rtrim(result_244.getString((JBSbatKK_T_KAISEN_TG_SVKEI.SVC_KEI_KAISEN_UCWK_NO)));
					
					// KCNの回線内訳番号を保持する
					if(svcCd.equals("03") && prgGrpCd.equals("12"))
					{
						svcKeiKsUwNoMap.put(svcKeiKaisenUwNo, svcKeiKaisenUwNo);
					}
					
					// KCN以外のデータを対象としリストに保持する。
					if(!svcCd.equals("03") && !prgGrpCd.equals("12"))
					{
						tempList.add(result_244);
					}
					result_244 = db_KK_T_SVC_KEI_244.selectNext();
				}
			}
			
			for(int i=0; i<tempList.size();i++){
				JBSbatCommonDBInterface copyRs = tempList.get(i);
				String svcKeiNo = JBSbatStringUtil.Rtrim(copyRs.getString((JBSbatKK_T_SVC_KEI.SVC_KEI_NO)));
				// アンロードにて抽出されていないサービス契約は対象外
				if(!svckeinoMap.containsKey(svcKeiNo))
				{
					continue;
				}
				
				String svcKeiKaisenUwNo = JBSbatStringUtil.Rtrim(copyRs.getString((JBSbatKK_T_KAISEN_TG_SVKEI.SVC_KEI_KAISEN_UCWK_NO)));
				// KCNの回線内訳番号と違う回線内訳番号は対象外
				if(!svcKeiKsUwNoMap.containsKey(svcKeiKaisenUwNo))
				{
					continue;
				}
				
				// 対象となるサービス契約の検索を行います。
				String[] param025 = {super.opeDate, svcKeiNo,super.opeDate};
				this.executeKK_T_SVC_KEI_KK_SELECT_245(param025);
				JBSbatCommonDBInterface svcKei245Map = db_KK_T_SVC_KEI_245.selectNext();
				
				// 検索結果がない場合は処理を行わない。
				while(null != svcKei245Map)
				{
					// 入出力インターフェースオブジェクトを生成(異動情報結果ファイル用)
					JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
					
					// お客様（個人）情報を設定します。
					boolean result = setCustInfo(svcKei245Map, outmap);
					
					if (result)
					{
						// 初期検索で取得した異動情報を異動情報ファイル（etv１）ファイルに設定します。
						setIdoInfoCustChg(svcKei245Map, outmap);
						
						//出力フラグを設定
						outmap.setOutFlg(true);
						
						//出力共通電文に入出力インターフェースを設定します。
						outputBean.addOutMapList(outmap);
					}
					else
					{
						// 入出力インターフェースオブジェクトを生成(異動情報結果ファイル用)
						JBSbatServiceInterfaceMap outmap1 = new JBSbatServiceInterfaceMap();
						
						// 初期検索で取得した異動情報を異動情報ファイル（etv１）ファイルに設定します。
						setIdoInfoCustChg(svcKei245Map, outmap1);
						
						//出力フラグを設定
						outmap1.setOutFlg(true);
						
						//出力共通電文に入出力インターフェースを設定する。
						outputBean.addOutMapList_2(outmap1);
					}
					svcKei245Map = db_KK_T_SVC_KEI_245.selectNext();
				}
			}

			
			
		}

		super.logPrint.printDebugLog("execute_END");
		
		return outputBean;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_RNKI_FILE_CTRL.close();
		db_KK_T_SVC_KEI.close();
		db_CK_T_CUST.close();
		db_KK_T_ADCHG_DTL.close();
		db_KK_T_SVC_KEI_244.close();
		db_KK_T_SVC_KEI_245.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	BUTSURI_BAT_ID
	 *		 	FILE_ID
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_RNKI_FILE_CTRL_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("BUTSURI_BAT_ID", whereParam[0]);
		whereMap.setValue("FILE_ID", whereParam[1]);

		// DBアクセスを実行します
		return db_KK_T_RNKI_FILE_CTRL.selectByPrimaryKeys(whereMap);
	}

	/**
	 * SQLKEY(KK_SELECT_183)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	進捗年月日時分秒
	 *		 	進捗年月日時分秒
	 *		 	回線内訳使用開始年月日
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_183(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_183);
	}
	
	/**
	 * SQLKEY(KK_SELECT_244)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	KAISEN_UCWK_USE_STAYMD
	 *			SYSID
	 *		 	RSV_APLY_YMD
	 *		 	RSV_APLY_YMD
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_244(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_244.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_244);
	}

	/**
	 * SQLKEY(KK_SELECT_245)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	回線内訳使用開始年月日
	 *		 	サービス契約番号
	 *          RSV_APLY_YMD
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_245(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_245.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_245);
	}
	
	/**
	 * SQLKEY(KK_SELECT_009)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SYSID
	 *		 	RSV_APLY_YMD
	 *		 	SYSID
	 *		 	RSV_APLY_YMD
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_KK_SELECT_009(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_KK_SELECT_009);
	}
	
	/**
	 * SQLKEY(KK_SELECT_017)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	ADCHG_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_ADCHG_DTL_KK_SELECT_017(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_ADCHG_DTL.selectBySqlDefine(paramList, KK_T_ADCHG_DTL_KK_SELECT_017);
	}
	
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 異動情報ファイル（etv1）情報(個人)の設定<br>
	 * <p>
	 * @param inMap 初期検索情報
	 * @param outmap 入出力インターフェースオブジェクト
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private void setIdoInfo(JBSbatCommonDBInterface inMap, JBSbatServiceInterfaceMap outmap) throws Exception
	{
		// お客様ＩＤ ← 住所変更明細の変更後識別番号
		outmap.setString(JBSbatKKIFM043.SVC_KEI_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO)));
		
		// 異動区分 ← 「10001」を設定
		outmap.setString(JBSbatKKIFM043.IDO_DIV, "10001");
		
		// 局コード ← 固定値を設定（”11”）
		outmap.setString(JBSbatKKIFM043.KYOKU_CD, KYOKU_CODE);
		
		// コース ← 空白を設定
		outmap.setString(JBSbatKKIFM043.COURSE, SPACE);
		
		// ＳＴＢ台数 ← 空白を設定
		outmap.setString(JBSbatKKIFM043.STB_CNT, SPACE);
		
		// 利用場所郵便番号 ← サービス契約回線内訳．回線場所郵便番号
		outmap.setString(JBSbatKKIFM043.KAISEN_PLACE_PCD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD)));
		
		// 利用場所住所 ← サービス契約回線内訳の「回線場所都道府県名」+「回線場所市区町村名」+「回線場所大字通称名」+「回線場所字丁目名」+
		// 					「回線場所番地号」+「回線場所住所補記・建物名」+「回線場所住所補記・部屋番号」を設定。(121桁を超える場合はカットする)
		String kaisen_place_ad = JZMAdOutputEdit.getPtn01(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM)),
															JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM)),
															JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM)),
															JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM)),
															JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO)),
															JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM)),
															JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM)));
		
		if(121 < JBSbatStringUtil.Rtrim(kaisen_place_ad).length())
		{
			kaisen_place_ad = kaisen_place_ad.substring(0, 121);
		}
		outmap.setString(JBSbatKKIFM043.KAISEN_PLACE_AD, kaisen_place_ad);
		
		// 請求先郵便番号 ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SEIKYS_PCD, SPACE);
		
		// 請求先住所 ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SEIKYS_AD, SPACE);
		
		// 送付先名（カナ） ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SOHUS_NM_KANA, SPACE);
		
		// 送付先名１ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SOHUS_NM1, SPACE);
		
		// 送付先名２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SOHUS_NM1, SPACE);
		
		// 送付先名３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SOHUS_NM2, SPACE);
		
		// 送付先電話番号 ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SOHUS_TELNO, SPACE);
		
		// 異動日 ← 進捗。進捗年月日時分秒
		outmap.setString(JBSbatKKIFM043.IDO_DAY, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_PRG.PRG_DTM)));
		
		// 料金プラン ← 固定値を設定（”041”）
		outmap.setString(JBSbatKKIFM043.PPLAN, RYOKIN_PLAN_CODE);
		
		// 更新日 ← 空白（編集処理にてシステム日時を設定）
		outmap.setString(JBSbatKKIFM043.UPD_DAY, SPACE);
		
		// マンションコード ← 空白を設定
		outmap.setString(JBSbatKKIFM043.MANSION_CD, SPACE);
		
		// 電障コード ← 固定値を設定（”9999999999”）
		outmap.setString(JBSbatKKIFM043.DENSHO_CD, DENSYO_CODE);
		
		// 住所変更明細の検索を行います。
		String[] para = {JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_ADCHG_DTL.ADCHG_NO))};
		this.executeKK_T_ADCHG_DTL_KK_SELECT_017(para);
		
		JBSbatCommonDBInterface adchgDtlResult = db_KK_T_ADCHG_DTL.selectNext();

		if(null == adchgDtlResult)
		{
			// 案件番号 ← 空白を設定
			outmap.setString(JBSbatKKIFM043.KOJIAK_NO, SPACE);
		} else {
			// 案件番号 ← 住所変更明細種別コード(06)の変更後識別番号
			outmap.setString(JBSbatKKIFM043.KOJIAK_NO, JBSbatStringUtil.Rtrim(adchgDtlResult.getString(JBSbatKK_T_ADCHG_DTL.CHAF_SKBT_NO)));
		}
		
		// ケーブルガイド申込数 ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CABLE_GUIDE_MOSHIKOMI, SPACE);
		
		// 工事案件対象宅内機器情報を設定します。
		setKjakTgTkkikiInfo(outmap);
		
		// 引越先サービス契約番号 ← サービス契約．サービス契約番号
		outmap.setString(JBSbatKKIFM043.HIKKOSHI_SKI_SVKEI_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_ADCHG_DTL.CHBF_SKBT_NO)));
		
		// 編集用異動区分 ← 進捗．異動区分
		outmap.setString(JBSbatKKIFM043.HENSHU_IDO_DIV, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_PRG.IDO_DIV)));
		
		// 編集用進捗ステータス ← 進捗．進捗ステータス
		outmap.setString(JBSbatKKIFM043.HENSHU_PRG_STAT, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_PRG.PRG_STAT)));
		
		// 照査年月日 ← サービス契約．照査年月日
		outmap.setString(JBSbatKKIFM043.SHOSA_YMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SHOSA_YMD)));
		
		// サービス課金終了年月日 ← サービス契約．サービス課金終了年月日
		outmap.setString(JBSbatKKIFM043.SVC_CHRG_ENDYMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_CHRG_ENDYMD)));
		
		// サービスキャンセル年月日 ← サービス契約．サービスキャンセル年月日
		outmap.setString(JBSbatKKIFM043.SVC_CANCEL_YMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_CANCEL_YMD)));
		
		// 回復年月日 ← サービス契約．回復年月日
		outmap.setString(JBSbatKKIFM043.KAIHK_YMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.KAIHK_YMD)));
		
		// サービス停止年月日 ← サービス契約．サービス停止年月日
		outmap.setString(JBSbatKKIFM043.SVC_STP_YMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_STP_YMD)));
		
		// サービス停止解除年月日 ← サービス契約．サービス停止解除年月日
		outmap.setString(JBSbatKKIFM043.SVC_STP_RLS_YMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_STP_RLS_YMD)));
		
		// プラン開始年月日
		outmap.setString(JBSbatKKIFM043.PLAN_STAYMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.PLAN_STAYMD)));
		
		// 登録年月日時分秒 ← 進捗．登録年月日時分秒
		outmap.setString(JBSbatKKIFM043.ADD_DTM, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_PRG.ADD_DTM)));
		
		// 申込明細番号 ← KK_T_SVC_KEI．MSKM_DTL_NO
		outmap.setString(JBSbatKKIFM043.MSKM_DTL_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.MSKM_DTL_NO)));
		
		// ＳＹＳＩＤ ← サービス契約．ＳＹＳＩＤ
		outmap.setString(JBSbatKKIFM043.SYSID, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SYSID)));
		
		// 出力元 ← 固定値を設定（”EO20G0160J0”）
		outmap.setString(JBSbatKKIFM043.OPUT_MT, JOB_ID);
	}
	
	/**
	 * 異動情報ファイル（etv1）情報(個人)の設定<br>
	 * <p>
	 * @param inMap 初期検索情報
	 * @param outmap 入出力インターフェースオブジェクト
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private void setIdoInfoCustChg(JBSbatCommonDBInterface inMap, JBSbatServiceInterfaceMap outmap) throws Exception
	{
		// お客様ＩＤ ← サービス契約．サービス契約番号
		outmap.setString(JBSbatKKIFM043.SVC_KEI_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO)));
		
		// 異動区分 ← ＫＣＮ連携異動区分．KCN連携異動区分
		outmap.setString(JBSbatKKIFM043.IDO_DIV, "06000");
		
		// 局コード ← 固定値を設定（”11”）
		outmap.setString(JBSbatKKIFM043.KYOKU_CD, KYOKU_CODE);
		
		// コース ← 空白を設定
		outmap.setString(JBSbatKKIFM043.COURSE, SPACE);
		
		// ＳＴＢ台数 ← 空白を設定
		outmap.setString(JBSbatKKIFM043.STB_CNT, SPACE);
		
		// 利用場所郵便番号 ← サービス契約回線内訳．回線場所郵便番号
		outmap.setString(JBSbatKKIFM043.KAISEN_PLACE_PCD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD)));
		
		// 利用場所住所 ← サービス契約回線内訳の「回線場所都道府県名」+「回線場所市区町村名」+「回線場所大字通称名」+「回線場所字丁目名」+
		// 					「回線場所番地号」+「回線場所住所補記・建物名」+「回線場所住所補記・部屋番号」を設定。(121桁を超える場合はカットする)
		String kaisen_place_ad = JZMAdOutputEdit.getPtn01(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM)),
															JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM)),
															JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM)),
															JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM)),
															JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO)),
															JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM)),
															JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM)));
		
		if(121 < JBSbatStringUtil.Rtrim(kaisen_place_ad).length())
		{
			kaisen_place_ad = kaisen_place_ad.substring(0, 121);
		}
		outmap.setString(JBSbatKKIFM043.KAISEN_PLACE_AD, kaisen_place_ad);
		
		// 請求先郵便番号 ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SEIKYS_PCD, SPACE);
		
		// 請求先住所 ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SEIKYS_AD, SPACE);
		
		// 送付先名（カナ） ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SOHUS_NM_KANA, SPACE);
		
		// 送付先名１ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SOHUS_NM1, SPACE);
		
		// 送付先名２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SOHUS_NM1, SPACE);
		
		// 送付先名３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SOHUS_NM2, SPACE);
		
		// 送付先電話番号 ← 空白を設定
		outmap.setString(JBSbatKKIFM043.SOHUS_TELNO, SPACE);
		
		// 異動日 ← 空白を設定
		outmap.setString(JBSbatKKIFM043.IDO_DAY, SPACE);
		
		// 料金プラン ← 固定値を設定（”041”）
		outmap.setString(JBSbatKKIFM043.PPLAN, RYOKIN_PLAN_CODE);
		
		// 更新日 ← 空白（編集処理にてシステム日時を設定）
		outmap.setString(JBSbatKKIFM043.UPD_DAY, SPACE);
		
		// マンションコード ← 空白を設定
		outmap.setString(JBSbatKKIFM043.MANSION_CD, SPACE);
		
		// 電障コード ← 固定値を設定（”9999999999”）
		outmap.setString(JBSbatKKIFM043.DENSHO_CD, DENSYO_CODE);
		
		// 案件番号 ← 空白を設定
		outmap.setString(JBSbatKKIFM043.KOJIAK_NO, SPACE);
		
		// ケーブルガイド申込数 ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CABLE_GUIDE_MOSHIKOMI, SPACE);
		
		// 工事案件対象宅内機器情報を設定します。
		setKjakTgTkkikiInfoCustchg(outmap);
		
		// 編集用異動区分 ← 進捗．異動区分
		outmap.setString(JBSbatKKIFM043.HENSHU_IDO_DIV, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_PRG.IDO_DIV)));
		
		// 編集用進捗ステータス ← 進捗．進捗ステータス
		outmap.setString(JBSbatKKIFM043.HENSHU_PRG_STAT, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_PRG.PRG_STAT)));
		
		// 照査年月日 ← サービス契約．照査年月日
		outmap.setString(JBSbatKKIFM043.SHOSA_YMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SHOSA_YMD)));
		
		// サービス課金終了年月日 ← サービス契約．サービス課金終了年月日
		outmap.setString(JBSbatKKIFM043.SVC_CHRG_ENDYMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_CHRG_ENDYMD)));
		
		// サービスキャンセル年月日 ← サービス契約．サービスキャンセル年月日
		outmap.setString(JBSbatKKIFM043.SVC_CANCEL_YMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_CANCEL_YMD)));
		
		// 回復年月日 ← サービス契約．回復年月日
		outmap.setString(JBSbatKKIFM043.KAIHK_YMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.KAIHK_YMD)));
		
		// サービス停止年月日 ← サービス契約．サービス停止年月日
		outmap.setString(JBSbatKKIFM043.SVC_STP_YMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_STP_YMD)));
		
		// サービス停止解除年月日 ← サービス契約．サービス停止解除年月日
		outmap.setString(JBSbatKKIFM043.SVC_STP_RLS_YMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_STP_RLS_YMD)));
		
		// プラン開始年月日
		outmap.setString(JBSbatKKIFM043.PLAN_STAYMD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.PLAN_STAYMD)));
		
		// 登録年月日時分秒 ← 進捗．登録年月日時分秒
		outmap.setString(JBSbatKKIFM043.ADD_DTM, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_PRG.ADD_DTM)));
		
		// 申込明細番号 ← KK_T_SVC_KEI．MSKM_DTL_NO
		outmap.setString(JBSbatKKIFM043.MSKM_DTL_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.MSKM_DTL_NO)));
		
		// ＳＹＳＩＤ ← サービス契約．ＳＹＳＩＤ
		outmap.setString(JBSbatKKIFM043.SYSID, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SYSID)));
		
		// 出力元 ← 固定値を設定（”EO20G0120J0”）
		outmap.setString(JBSbatKKIFM043.OPUT_MT, JOB_ID);
	}
	
	/**
	 * お客様情報の設定<br>
	 * <p>
	 * @param inMap 入力情報
	 * @param outmap 出力情報（お客様情報あり）
	 * @return true：お客様情報あり、false：お客様情報なし
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private boolean setCustInfo(JBSbatCommonDBInterface inMap, JBSbatServiceInterfaceMap outmap) throws Exception
	{
		// SYSIDを取得します。
		String sys_id = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SYSID));
		
		Object[] para = new Object[4];
		para[0] = sys_id;
		para[1] = super.opeDate;
		para[2] = sys_id;
		para[3] = super.opeDate;
		
		
		// お客様(個人)情報を取得します。
		executeCK_T_CUST_KK_SELECT_009(para);
		
		JBSbatCommonDBInterface resultMap = db_CK_T_CUST.selectNext();
		
		// 検索結果がある場合
		if (resultMap != null)
		{
			// 郵便番号 ← お客様．契約者郵便番号
			outmap.setString(JBSbatKKIFM043.KEISHA_PCD, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.KEISHA_PCD)));
			
			// 住所 ← お客様の「契約者都道府県名」+「契約者市区町村名」+「契約者大字通称名」+「契約者字丁目名」
			// 			+「契約者番地号」+「契約者住所補記・建物名」+「契約者住所補記・部屋番号」を設定。(121桁を超える場合はカットする)
			String ad = JZMAdOutputEdit.getPtn01(JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.KEISHA_STATE_NM)),
													JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.KEISHA_CITY_NM)),
													JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.KEISHA_OAZTSU_NM)),
													JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.KEISHA_AZCHO_NM)),
													JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.KEISHA_BNCHIGO)),
													JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.KEISHA_ADRTTM)),
													JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.KEISHA_ADRRM)));
			if(121 < JBSbatStringUtil.Rtrim(ad).length())
			{
				ad = ad.substring(0, 121);
			}
			
			outmap.setString(JBSbatKKIFM043.AD, ad);
			
			// 契約者名カナ ← お客様．お客様カナ名
			outmap.setString(JBSbatKKIFM043.KEISHA_NM_KANA, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.CUST_KANA)));
			
			// 契約者名１ ← 「お客様．お客様名」の1〜15文字
			// 契約者名２ ← 「お客様．お客様名」の16〜30文字
			// 契約者名３ ← 「お客様．お客様名」の31〜45文字
			// 端末設置場所名１ ← 「お客様．お客様名」の1〜15文字
			// 端末設置場所名２ ← 「お客様．お客様名」の16〜30文字
			// 端末設置場所名３ ← 「お客様．お客様名」の31〜45文字
			String cust_nm = JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.CUST_NM));
			if (!"".equals(cust_nm))
			{
				outmap.setString(JBSbatKKIFM043.KEISHA_NM1, getMojiBunkatsu(cust_nm, 0, 15));
				outmap.setString(JBSbatKKIFM043.KEISHA_NM2, getMojiBunkatsu(cust_nm, 15, 30));
				outmap.setString(JBSbatKKIFM043.KEISHA_NM3, getMojiBunkatsu(cust_nm, 30, 45));
				outmap.setString(JBSbatKKIFM043.TNMT_SETPLACE_NM1, getMojiBunkatsu(cust_nm, 0, 15));
				outmap.setString(JBSbatKKIFM043.TNMT_SETPLACE_NM2, getMojiBunkatsu(cust_nm, 15, 30));
				outmap.setString(JBSbatKKIFM043.TNMT_SETPLACE_NM3, getMojiBunkatsu(cust_nm, 30, 45));
			}
			
			// 電話番号 ← 個人：連絡先の「電話番号」を設定
			outmap.setString(JBSbatKKIFM043.TELNO, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_RRKS.TELNO)));
			
			// 端末設置場所名（カナ） ← お客様．お客様カナ名
			outmap.setString(JBSbatKKIFM043.TNMT_SETPLACE_NM_KANA, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.CUST_KANA)));
			
			// 端末設置場所電話番号 ← 個人の場合：連絡先．TELNO
			outmap.setString(JBSbatKKIFM043.TNMT_SETPLACE_NM_TELNO, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_RRKS.TELNO)));
			
			// 性別 ← お客様．お客様性別コード(１：男性、２：女性、３：空白のコードを設定)
			outmap.setString(JBSbatKKIFM043.CUST_SEX_CD, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.CUST_SEX_CD)));
			
			// 生年月日 ← お客様．お客様生年月日
			outmap.setString(JBSbatKKIFM043.CUST_BIRTHD, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.CUST_BIRTHD)));
			
			return true;
		}
		else
		{
			super.logPrint.printDebugLog("お客様＜個人＞に存在しません。SYSID：" + sys_id);
			return false;
		}
	}
	
	/**
	 * 工事案件対象宅内機器情報の設定<br>
	 * <p>
	 * @param outmap 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private void setKjakTgTkkikiInfo(JBSbatServiceInterfaceMap outmap) throws Exception
	{
		// ＳＴＢ異動区分１ ← 工事案件対象宅内機器．宅内機器異動コード
		outmap.setString(JBSbatKKIFM043.STB_IDO_CD1, SPACE);
		
		// 変更前ＳＴＢ型番号１ ← 工事案件対象宅内機器．予定宅内機器型式コード
		outmap.setString(JBSbatKKIFM043.CHBF_STB_MODEL_NO1, SPACE);
		
		// 変更前ＳＴＢＩＤ１ ← 工事案件対象宅内機器．予定ＳＴＢ−ＩＤ
		outmap.setString(JBSbatKKIFM043.CHBF_STB_ID1, SPACE);
		
		// 変更前ＨＤＤ容量コード１ ← 工事案件対象宅内機器．予定ＨＤＤ容量コード
		outmap.setString(JBSbatKKIFM043.CHBF_HDD_CAPA_CD1, SPACE);
		
		// 変更後ＨＤＤ容量コード１ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_HDD_CAPA_CD1, SPACE);
		
		// 変更前メーカーコード１ ← 工事案件対象宅内機器．予定メーカーコード
		outmap.setString(JBSbatKKIFM043.CHBF_MAKER_CD1, SPACE);
		
		// 変更後メーカーコード１ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_MAKER_CD1, SPACE);
		
		// ＳＴＢ異動区分２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.STB_IDO_CD2, SPACE);
		
		// 変更前ＳＴＢ型番号２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_MODEL_NO2, SPACE);
		
		// 変更前ＳＴＢＩＤ２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_ID2, SPACE);
		
		// 変更前ＨＤＤ容量コード２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_HDD_CAPA_CD2, SPACE);
		
		// 変更後ＨＤＤ容量コード２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_HDD_CAPA_CD2, SPACE);
		
		// 変更前メーカーコード２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_MAKER_CD2, SPACE);
		
		// 変更後メーカーコード２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_MAKER_CD2, SPACE);
		
		// ＳＴＢ異動区分３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.STB_IDO_CD3, SPACE);
		
		// 変更前ＳＴＢ型番号３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_MODEL_NO3, SPACE);
		
		// 変更前ＳＴＢＩＤ３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_ID3, SPACE);
		
		// 変更前ＨＤＤ容量コード３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_HDD_CAPA_CD3, SPACE);
		
		// 変更後ＨＤＤ容量コード３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_HDD_CAPA_CD3, SPACE);
		
		// 変更前メーカーコード３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_MAKER_CD3, SPACE);
		
		// 変更後メーカーコード３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_MAKER_CD3, SPACE);
		
		// ＳＴＢ異動区分４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.STB_IDO_CD4, SPACE);
		
		// 変更前ＳＴＢ型番号４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_MODEL_NO4, SPACE);
		
		// 変更前ＳＴＢＩＤ４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_ID4, SPACE);
		
		// 変更前ＨＤＤ容量コード４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_HDD_CAPA_CD4, SPACE);
		
		// 変更後ＨＤＤ容量コード４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_HDD_CAPA_CD4, SPACE);
		
		// 変更前メーカーコード４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_MAKER_CD4, SPACE);
		
		// 変更後メーカーコード４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_MAKER_CD4, SPACE);
		
		// ＳＴＢ異動区分５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.STB_IDO_CD5, SPACE);
		
		// 変更前ＳＴＢ型番号５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_MODEL_NO5, SPACE);
		
		// 変更前ＳＴＢＩＤ５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_ID5, SPACE);
		
		// 変更前ＨＤＤ容量コード５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_HDD_CAPA_CD5, SPACE);
		
		// 変更後ＨＤＤ容量コード５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_HDD_CAPA_CD5, SPACE);
		
		// 変更前メーカーコード５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_MAKER_CD5, SPACE);
		
		// 変更後メーカーコード５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_MAKER_CD5, SPACE);
	}
	
	/**
	 * 工事案件対象宅内機器情報の設定<br>
	 * <p>
	 * @param outmap 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private void setKjakTgTkkikiInfoCustchg(JBSbatServiceInterfaceMap outmap) throws Exception
	{
		// ＳＴＢ異動区分１ ← 工事案件対象宅内機器．宅内機器異動コード
		outmap.setString(JBSbatKKIFM043.STB_IDO_CD1, SPACE);
		
		// 変更前ＳＴＢ型番号１ ← 工事案件対象宅内機器．予定宅内機器型式コード
		outmap.setString(JBSbatKKIFM043.CHBF_STB_MODEL_NO1, SPACE);
		
		// 変更前ＳＴＢＩＤ１ ← 工事案件対象宅内機器．予定ＳＴＢ−ＩＤ
		outmap.setString(JBSbatKKIFM043.CHBF_STB_ID1, SPACE);
		
		// 変更前ＨＤＤ容量コード１ ← 工事案件対象宅内機器．予定ＨＤＤ容量コード
		outmap.setString(JBSbatKKIFM043.CHBF_HDD_CAPA_CD1, SPACE);
		
		// 変更後ＨＤＤ容量コード１ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_HDD_CAPA_CD1, SPACE);
		
		// 変更前メーカーコード１ ← 工事案件対象宅内機器．予定メーカーコード
		outmap.setString(JBSbatKKIFM043.CHBF_MAKER_CD1, SPACE);
		
		// 変更後メーカーコード１ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_MAKER_CD1, SPACE);
		
		// ＳＴＢ異動区分２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.STB_IDO_CD2, SPACE);
		
		// 変更前ＳＴＢ型番号２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_MODEL_NO2, SPACE);
		
		// 変更前ＳＴＢＩＤ２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_ID2, SPACE);
		
		// 変更前ＨＤＤ容量コード２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_HDD_CAPA_CD2, SPACE);
		
		// 変更後ＨＤＤ容量コード２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_HDD_CAPA_CD2, SPACE);
		
		// 変更前メーカーコード２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_MAKER_CD2, SPACE);
		
		// 変更後メーカーコード２ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_MAKER_CD2, SPACE);
		
		// ＳＴＢ異動区分３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.STB_IDO_CD3, SPACE);
		
		// 変更前ＳＴＢ型番号３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_MODEL_NO3, SPACE);
		
		// 変更前ＳＴＢＩＤ３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_ID3, SPACE);
		
		// 変更前ＨＤＤ容量コード３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_HDD_CAPA_CD3, SPACE);
		
		// 変更後ＨＤＤ容量コード３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_HDD_CAPA_CD3, SPACE);
		
		// 変更前メーカーコード３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_MAKER_CD3, SPACE);
		
		// 変更後メーカーコード３ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_MAKER_CD3, SPACE);
		
		// ＳＴＢ異動区分４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.STB_IDO_CD4, SPACE);
		
		// 変更前ＳＴＢ型番号４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_MODEL_NO4, SPACE);
		
		// 変更前ＳＴＢＩＤ４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_ID4, SPACE);
		
		// 変更前ＨＤＤ容量コード４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_HDD_CAPA_CD4, SPACE);
		
		// 変更後ＨＤＤ容量コード４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_HDD_CAPA_CD4, SPACE);
		
		// 変更前メーカーコード４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_MAKER_CD4, SPACE);
		
		// 変更後メーカーコード４ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_MAKER_CD4, SPACE);
		
		// ＳＴＢ異動区分５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.STB_IDO_CD5, SPACE);
		
		// 変更前ＳＴＢ型番号５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_MODEL_NO5, SPACE);
		
		// 変更前ＳＴＢＩＤ５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_STB_ID5, SPACE);
		
		// 変更前ＨＤＤ容量コード５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_HDD_CAPA_CD5, SPACE);
		
		// 変更後ＨＤＤ容量コード５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_HDD_CAPA_CD5, SPACE);
		
		// 変更前メーカーコード５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHBF_MAKER_CD5, SPACE);
		
		// 変更後メーカーコード５ ← 空白を設定
		outmap.setString(JBSbatKKIFM043.CHAF_MAKER_CD5, SPACE);
	}
	
	/**
	 * 指定したインデックスの文字列を返します。<br>
	 * <p>
	 * @param str 対象文字列
	 * @param start 開始位置
	 * @param end 終了位置
	 * @return 分割した文字列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private String getMojiBunkatsu(String str, int start , int end) throws Exception
	{
		
		int length = str.length();
		String result = "";
		
		if (start != 0)
		{
			if (length >= end)
			{
				result = str.substring(start, end);
			}
			else if (length >= start && length <= end)
			{
				result = str.substring(start, length);
			}
			else
			{
				result = SPACE;
			}
		}
		else if (length >= start  && length >= end)
		{
			result =  str.substring(start, end);
		}
		else
		{
			result =  str.substring(start, length);
		}
		return result;
	}
	
	/**
	 * EO20G0110J0にて出力された抽出開始タイムスタンプを取得します。<br>
	 * <p>
	 * @return 抽出開始時分秒
	 * @throws JBSbatBusinessException 
	 * @throws IOException 業務サービス内で発生した例外全般。
	 */	
	private String getSearchTimeStamp() throws JBSbatBusinessException, IOException
	{
		String searhTimeStamp = "";
		
		// 読み込みファイル名取得
		String[] free_item = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);
		String file_name = free_item[1];
		BufferedReader br = null;
		
		// 前回処理実行年月日時分秒保持ファイルを読み込みます。
		try
		{
			InputStreamReader is = new InputStreamReader(new FileInputStream(file_name), "Shift-JIS");
			br = new BufferedReader(is);
			
			if (br.ready())
			{
				// １行読込み
				searhTimeStamp = br.readLine();
			}
		}
		catch (IOException e)
		{
			// 前回処理実行年月日時分秒保持ファイルがない場合はエラー。
			throw new JBSbatBusinessException("EKKB0020CE", new String[]{file_name});
		}
		finally
		{
			if (null != br)
			{
				br.close();
			}
		}
		return searhTimeStamp;
	}
}
