/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom                        *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKIdoInfFileSakseiKojin
*	ソースファイル名	：JBSbatKKIdoInfFileSakseiKojin.java
*	作成者				：富士通　
*	作成日				：2011年012月09日
*＜機能概要＞
*　異動情ファイル作成＿異動情報の抽出１＿個人部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v2.00.00	2011/12/09  FJ)倉上		新規作成
*	v3.00.00	2012/05/17  FJ)藤本		巻@【ANK-0061-00-00】対応
*	v3.01.00	2012/08/10  FJ)藤本		【ST2-2012-0001503】住所部品の戻り値のNullチェック追加
*	v3.02.00	2012/08/27  FJ)藤本		【ST1-2012-0000429】重複して出力される障害を修正
*	v3.03.00	2012/09/06  FJ)藤本		【ST1-2012-0000518】異動日が出力されない障害を修正
*	v3.04.00	2012/09/24  FJ)藤本		【ST2-2012-0001714】運用日の前日を抽出するように修正
*	v3.05.00	2012/10/26  FJ)藤本		【ST1-2012-0000713】運用日で抽出するように修正
*	v3.06.00	2012/11/07  FJ)藤本		【IT2-2012-0001652】個人が存在しない場合はエラーとしない
*	v4.00.00	2013/01/17  FJ)団		【ST2-2013-0000113】連携ファイル制御で範囲指定するよう修正
*	v4.01.00	2013/03/22  FJ)柳		【IT1-2013-0000498】対応
*	v4.02.00	2013/03/26  FJ)藤本		【ST1-2013-0000499】対応
*	v5.00.00	2013/04/12  FJ)藤本		【IT1-2013-0000890】障害対応
*********************************************************************/
package eo.business.service;

import java.io.IOException;
import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatConst;
import eo.business.common.JKKBatOutputUtil;
import eo.business.util.file.JBSbatKKIFM043;
import eo.business.util.file.JBSbatKKIFM429;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatCK_T_RRKS;
import eo.business.util.table.JBSbatKK_M_KCNRIDODIV_CHG;
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.util.JZMAdOutputEdit;
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.log.JBSbatLogUtil;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKIdoInfFileSakseiKojinF 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_CK_T_CUST = "CK_T_CUST";
	
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";
	
	/** SQL定義キー(KK_SELECT_025)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_025 = "KK_SELECT_025";

	/** SQL定義キー(KK_SELECT_009)*/
	private static final String CK_T_CUST_KK_SELECT_009 = "KK_SELECT_009";
	
	/** SQL定義キー(KK_SELECT_039)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_039 = "KK_SELECT_039";
	
	/** SQL定義キー(KK_SELECT_136)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_136 = "KK_SELECT_136";
	
	/** テーブルアクセスクラス(連携ファイル制御)*/
	private JBSbatSQLAccess db_KK_T_RNKI_FILE_CTRL = null;
	
	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;
	
	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_025 = null;
	
	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_039 = null;
	
	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_136 = null;
	
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 出力元 */
	private static final String JOB_ID = "EO20G0110J0";
	
	/** 物理バッチ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";
	
	/** 出力共通電文クラス*/
	private JBSbatOutputItem outputBean = null;
	
	/** 異動区分（回復）*/
	private static final String IDO_DIV_KAIHK = "00004";
	
	/** 異動区分（強制解約）*/
	private static final String IDO_DIV_KSI_DSL = "00064";
	
	/** ファイル出力キーリスト */
	private ArrayList<String> outKeyList = null;
	
	/** 前回実施日時分秒 */
	private String znkiJssiTimestamp = "";
	
	/**
	 * 初期処理
	 * @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_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_KK_T_SVC_KEI_025 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_SVC_KEI_039 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_SVC_KEI_136 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		super.logPrint.printDebugLog("execute_START");
		
		// 出力共通電文クラスの生成を行います。
		outputBean = new JBSbatOutputItem();
		
		// ファイル出力キーリストを初期化する。
		outKeyList = new ArrayList<String>();
		
		JBSbatCommonDBInterface db_map = null;
		
		// 連携ファイル制御を検索します。
		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 = JBSbatDateUtil.getSystemDateTimeStamp();
		if(17 == searhTimeStamp.length())
		{
			// 運用日＋時分秒とし保持する。
			searhTimeStamp = super.opeDate + searhTimeStamp.substring(8);
		}
		
		// 対象となるサービス契約の検索を行います。
		String[] para2 = {znkiJssiTimestamp, searhTimeStamp, super.opeDate};
		this.executeKK_T_SVC_KEI_KK_SELECT_025(para2);
		
		JBSbatCommonDBInterface svcKeiResult = db_KK_T_SVC_KEI_025.selectNext();
		if(null == svcKeiResult)
		{
			super.logPrint.printDebugLog("異動日時＞「" + znkiJssiTimestamp + "」、異動日時＜＝「" + searhTimeStamp + "」の光テレビ(KCN)サービス契約の異動情報の検索結果がありませんでした。");
		}
		else
		{
			// 同じサービス契約番号のデータをリストに格納し異動情報ファイルを作成します。
			String svc_kei_no_old = "";
			ArrayList<JBSbatCommonDBInterface> svcKeiList = new ArrayList<JBSbatCommonDBInterface>();
			while(null != svcKeiResult)
			{
				// 検索結果よりサービス契約番号を取得します。
				String svc_kei_no = JBSbatStringUtil.Rtrim(svcKeiResult.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
				
				if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
				{
					super.logPrint.printDebugLog("■サービス契約番号：" + svc_kei_no +
													" 異動区分[" + svcKeiResult.getString(JBSbatKK_T_SVC_KEI.IDO_DIV) + "]" +
													" 進捗ステータス[" + svcKeiResult.getString(JBSbatKK_T_PRG.PRG_STAT) + "]");
				}
				
				// 退避しているサービス契約番号が変わったら
				if(!svc_kei_no_old.equals(svc_kei_no))
				{
					// サービス契約情報が設定されていたら
					if(0 != svcKeiList.size())
					{
						// 異動情報の作成を行います。
						this.createIdoInf(svcKeiList);
					}
					
					// リストを初期化し、検索結果を追加します。
					svc_kei_no_old = svc_kei_no;
					svcKeiList = new ArrayList<JBSbatCommonDBInterface>();
					svcKeiList.add(svcKeiResult);
				}
				else
				{
					// 同じサービス契約番号の場合はリストに追加します。
					svcKeiList.add(svcKeiResult);
				}
				svcKeiResult = db_KK_T_SVC_KEI_025.selectNext();
				
			}
			// 異動情報の作成を行います。
			this.createIdoInf(svcKeiList);
		}
		
		// 抽出時の年月日時分秒をファイルに書き込む。
		JBSbatOutputItem outMap = new JBSbatOutputItem();
		JBSbatServiceInterfaceMap outMapKKIFM429 = new JBSbatServiceInterfaceMap();
		outMapKKIFM429.setString(JBSbatKKIFM429.ZNKI_TRAN_RUN_DTM, searhTimeStamp);
		outMap.addOutMapList(outMapKKIFM429);
		
		// フリー項目よりファイル出力先、ファイル名を取得し、出力する。
		String[] free_item = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);
		JKKBatOutputUtil.editOutFile(super.commonItem, outMap, "KKIFM429", free_item[0], free_item[1]);
		
		super.logPrint.printDebugLog("execute_END");
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_RNKI_FILE_CTRL.close();
		db_CK_T_CUST.close();
		db_KK_T_SVC_KEI_025.close();
		db_KK_T_SVC_KEI_039.close();
		db_KK_T_SVC_KEI_136.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_025)で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_025(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_025.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_025);
	}

	/**
	 * SQLKEY(KK_SELECT_039)で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_039(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_039.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_039);
	}

	/**
	 * SQLKEY(KK_SELECT_136)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SVC_KEI_NO
	 *		 	RSV_APLY_YMD
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_136(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_136.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_136);
	}

	/**
	 * SQLKEY(KK_SELECT_009)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SYSID
	 *		 	バッチ運用日
	 *		 	SYSID
	 *		 	バッチ運用日
	 * </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);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 異動情報ファイル（etv1）情報(個人)の設定<br>
	 * <p>
	 * @param svcKei025Map 初期検索結果（KK_SELECT_025）
	 * @param svcKei039Map サービス契約検索結果（KK_SELECT_039）
	 * @param outmap 入出力インターフェースオブジェクト
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private void setIdoInfo(JBSbatCommonDBInterface svcKei025Map, JBSbatCommonDBInterface svcKei039Map, JBSbatServiceInterfaceMap outmap) throws Exception
	{
		
		// お客様ＩＤ ← サービス契約．サービス契約番号
		outmap.setString(JBSbatKKIFM043.SVC_KEI_NO, JBSbatStringUtil.Rtrim(svcKei025Map.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO)));
		
		// 異動区分 ← ＫＣＮ連携異動区分．KCN連携異動区分
		outmap.setString(JBSbatKKIFM043.IDO_DIV, JBSbatStringUtil.Rtrim(svcKei025Map.getString(JBSbatKK_M_KCNRIDODIV_CHG.KCNRIDODIV)));
		
		// 局コード ← 固定値を設定（”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(svcKei039Map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD)));
		
		// 利用場所住所 ← サービス契約回線内訳の「回線場所都道府県名」+「回線場所市区町村名」+「回線場所大字通称名」+「回線場所字丁目名」+
		// 					「回線場所番地号」+「回線場所住所補記・建物名」+「回線場所住所補記・部屋番号」を設定。(121桁を超える場合はカットする)
		String kaisen_place_ad = JZMAdOutputEdit.getPtn01(JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM)),
															JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM)),
															JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM)),
															JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM)),
															JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO)),
															JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM)),
															JBSbatStringUtil.Rtrim(svcKei039Map.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);
		
		// 工事案件対象宅内機器情報を設定します。
		setKjakTgTkkikiInfo(outmap);
		
		// 編集用異動区分 ← 進捗．異動区分
		outmap.setString(JBSbatKKIFM043.HENSHU_IDO_DIV, JBSbatStringUtil.Rtrim(svcKei025Map.getString(JBSbatKK_T_PRG.IDO_DIV)));
		
		// 編集用進捗ステータス ← 進捗．進捗ステータス
		outmap.setString(JBSbatKKIFM043.HENSHU_PRG_STAT, JBSbatStringUtil.Rtrim(svcKei025Map.getString(JBSbatKK_T_PRG.PRG_STAT)));
		
		// 照査年月日 ← サービス契約．照査年月日
		outmap.setString(JBSbatKKIFM043.SHOSA_YMD, JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVC_KEI.SHOSA_YMD)));
		
		// サービス課金終了年月日 ← サービス契約．サービス課金終了年月日
		outmap.setString(JBSbatKKIFM043.SVC_CHRG_ENDYMD, JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVC_KEI.SVC_CHRG_ENDYMD)));
		
		// サービスキャンセル年月日 ← サービス契約．サービスキャンセル年月日
		outmap.setString(JBSbatKKIFM043.SVC_CANCEL_YMD, JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVC_KEI.SVC_CANCEL_YMD)));
		
		// 回復年月日 ← サービス契約．回復年月日
		outmap.setString(JBSbatKKIFM043.KAIHK_YMD, JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVC_KEI.KAIHK_YMD)));
		
		// サービス停止年月日 ← サービス契約．サービス停止年月日
		outmap.setString(JBSbatKKIFM043.SVC_STP_YMD, JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVC_KEI.SVC_STP_YMD)));
		
		// サービス停止解除年月日 ← サービス契約．サービス停止解除年月日
		outmap.setString(JBSbatKKIFM043.SVC_STP_RLS_YMD, JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVC_KEI.SVC_STP_RLS_YMD)));
		
		// プラン開始年月日
		outmap.setString(JBSbatKKIFM043.PLAN_STAYMD, JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVC_KEI.PLAN_STAYMD)));
		
		// 登録年月日時分秒 ← 進捗．登録年月日時分秒
		outmap.setString(JBSbatKKIFM043.ADD_DTM, JBSbatStringUtil.Rtrim(svcKei025Map.getString(JBSbatKK_T_PRG.ADD_DTM)));
		
		// 申込明細番号 ←サービス契約．申込明細番号
		outmap.setString(JBSbatKKIFM043.MSKM_DTL_NO, JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVC_KEI.MSKM_DTL_NO)));
		
		// ＳＹＳＩＤ ← サービス契約．ＳＹＳＩＤ
		outmap.setString(JBSbatKKIFM043.SYSID, JBSbatStringUtil.Rtrim(svcKei039Map.getString(JBSbatKK_T_SVC_KEI.SYSID)));
		
		// 出力元 ← 固定値を設定（”EO20G0110J0”）
		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 str 対象文字列
	 * @param start 開始位置
	 * @param end 終了位置
	 * @return 分割した文字列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	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;
	}
	
	/**
	 * サービス契約検索結果より異動情報を作成します。<br>
	 * <p>
	 * @param svcKeiList サービス契約検索結果リスト
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void createIdoInf(ArrayList<JBSbatCommonDBInterface> svcKeiList) throws Exception
	{
		// サービス契約番号で１件しかない場合
		if(1 == svcKeiList.size())
		{
			// 以下の処理を行わずに異動情報を出力します。
			this.createIdoInf(svcKeiList.get(0));
			return;
		}
		
		// 指定されたリスト分繰り返します。
		for(int i = 0; i < svcKeiList.size(); i++)
		{
			// サービス契約検索結果を取得します。
			JBSbatCommonDBInterface svcKeiMap = svcKeiList.get(i);
			
			// 異動区分を取得します。
			String ido_div = JBSbatStringUtil.Rtrim(svcKeiMap.getString(JBSbatKK_T_SVC_KEI.IDO_DIV));
			
			// 「回復：00004」または「強制解約：00064」の場合
			if(IDO_DIV_KAIHK.equals(ido_div) || IDO_DIV_KSI_DSL.equals(ido_div))
			{
				// 最終の異動区分を取得します。
				String idodivLast = svcKeiList.get(svcKeiList.size() - 1).getString(JBSbatKK_T_SVC_KEI.IDO_DIV);
				
				// 「回復：00004」の場合
				if(IDO_DIV_KAIHK.equals(ido_div))
				{
					// 最終の異動区分が「強制解約：00064」の場合
					if(IDO_DIV_KSI_DSL.equals(idodivLast))
					{
						// 回復⇒強制解約の場合は相殺とするため処理を抜けます。
						break;
					}
					// 最終の異動区分が「回復：00004」の場合
					else if(IDO_DIV_KAIHK.equals(idodivLast))
					{
						// 最終の「回復：00004」のデータをファイル出力して処理を抜けます。
						JBSbatCommonDBInterface svcKeiMapLast = svcKeiList.get(svcKeiList.size() - 1);
						this.createIdoInf(svcKeiMapLast);
						break;
					}
				}
				// 「強制解約：00064」の場合
				else
				{
					// 最終の異動区分が「回復：00004」の場合
					if(IDO_DIV_KAIHK.equals(idodivLast))
					{
						// 運用日前日の最終のサービス契約ステータスを抽出します。
						String svc_kei_stat = "";
						
						// サービス契約番号を取得します。
						String svc_kei_no = JBSbatStringUtil.Rtrim(svcKeiMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
						
						// サービス契約検索処理を行います。（前回抽出年月日時分秒の年月日の最新とする。）
						String[] param = { svc_kei_no, znkiJssiTimestamp.substring(0, 8) };
						this.executeKK_T_SVC_KEI_KK_SELECT_136(param);
						JBSbatCommonDBInterface svcKeiResult = db_KK_T_SVC_KEI_136.selectNext();
						
						// 検索結果があればサービス契約ステータスを設定します。
						if(null != svcKeiResult)
						{
							svc_kei_stat = JBSbatStringUtil.Rtrim(svcKeiResult.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT));
						}
						
						super.logPrint.printDebugLog("前日最終のサービス契約ステータス：" + svc_kei_stat);
						
						// 前日最終のサービス契約ステータスが「停止中」の場合
						if("220".equals(svc_kei_stat))
						{
							// 最終の「回復：00004」のデータを取得します。
							JBSbatCommonDBInterface svcKeiMapLast = svcKeiList.get(svcKeiList.size() - 1);
							
							// KCN連携異動区分は「利用停止解除」を設定しファイル出力して処理を抜けます。
							svcKeiMapLast.setValue(JBSbatKK_M_KCNRIDODIV_CHG.KCNRIDODIV, "04050");
							this.createIdoInf(svcKeiMapLast);
							break;
						}
						else
						{
							// 強制解約⇒回復の場合は相殺とするため処理を抜けます。
							break;
						}
					}
					// 最終の異動区分が「強制解約：00064」の場合
					else if(IDO_DIV_KSI_DSL.equals(idodivLast))
					{
						// 最終の「強制解約：00064」のデータをファイル出力して処理を抜けます。
						JBSbatCommonDBInterface svcKeiMapLast = svcKeiList.get(svcKeiList.size() - 1);
						this.createIdoInf(svcKeiMapLast);
						break;
					}
				}
			}
			
			// ファイル作成対象の場合に作成します。
			this.createIdoInf(svcKeiMap);
		}
	}
	
	/**
	 * 異動情報ファイルの作成を行います。<br>
	 * <p>
	 * @param svcKei025Map サービス契約検索結果（KK_SELECT_025検索結果）
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void createIdoInf(JBSbatCommonDBInterface svcKei025Map) throws Exception
	{
		// 進捗が登録された直近のサービス契約を抽出する。
		String[] param025 = {super.opeDate, svcKei025Map.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO), svcKei025Map.getString(JBSbatKK_T_PRG.ADD_DTM)};
		this.executeKK_T_SVC_KEI_KK_SELECT_039(param025);
		JBSbatCommonDBInterface svcKei039Map = db_KK_T_SVC_KEI_039.selectNext();
		
		// 検索結果がない場合は後続の処理を行わない。
		if(null == svcKei039Map)
		{
			return;
		}
		
		// サービス契約番号、KCN連携異動区分をキーとしてキーリストに追加されていない場合、出力処理を行う。
		StringBuilder sb = new StringBuilder(JBSbatStringUtil.Rtrim(svcKei025Map.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO)));
		sb.append(JBSbatStringUtil.Rtrim(svcKei025Map.getString(JBSbatKK_M_KCNRIDODIV_CHG.KCNRIDODIV)));
		
		if(!outKeyList.contains(sb.toString())){
			
			// 入出力インターフェースオブジェクトを生成(異動情報結果ファイル（個人）用)
			JBSbatServiceInterfaceMap outmapKojin = new JBSbatServiceInterfaceMap();
				
			// 入出力インターフェースオブジェクトを生成(異動情報結果ファイル（個人以外）用)
			JBSbatServiceInterfaceMap outmapOther = new JBSbatServiceInterfaceMap();
			
			// お客様（個人）情報を設定します。
			boolean result = setCustInfo(svcKei025Map, outmapKojin);
			
			// 個人のお客様情報があった場合
			if (result)
			{
				// 初期検索で取得した異動情報を異動情報ファイル（etv１）ファイルに設定します。
				setIdoInfo(svcKei025Map, svcKei039Map, outmapKojin);
				
				// 出力フラグを設定
				outmapKojin.setOutFlg(true);
				
				// 出力共通電文に入出力インターフェースを設定する。
				outputBean.addOutMapList(outmapKojin);
			}
			else
			{
				// 初期検索で取得した異動情報を異動情報ファイル（etv１）ファイルに設定します。
				setIdoInfo(svcKei025Map, svcKei039Map, outmapOther);
				
				// 出力フラグを設定
				outmapOther.setOutFlg(true);
				
				// 出力共通電文に入出力インターフェースを設定する。
				outputBean.addOutMapList_2(outmapOther);
			}
			// サービス契約番号、KCN連携異動区分をキーとしてキーリストに追加
			outKeyList.add(sb.toString());
		}
	}
}