/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKUStbKrStcRnkiSaksei
*	ソースファイル名	：JBSbatKUStbKrStcRnkiSaksei.java
*	作成者				：富士通　
*	作成日				：2011年06月10日
*＜機能概要＞
*　ＳＴＢ仮設置連携作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/06/10   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKUBatCommon;
import eo.business.util.file.JBSbatKKIFI023;
import eo.business.util.file.JBSbatKUIFM003;
import eo.business.util.file.JBSbatWCIFI001;
import eo.business.util.table.JBSbatKU_T_KJAK_TG_TKKIKI;
import eo.business.util.table.JBSbatKU_T_KJ_KNRN_RCV_IF;
import eo.business.util.table.JBSbatKU_T_SVKEI_KOJIAK;
import eo.common.constant.JKUStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKUStbKrStcRnkiSaksei extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(工事案件対象宅内機器)*/
	private static final String D_TBL_NAME_KU_T_KJAK_TG_TKKIKI = "KU_T_KJAK_TG_TKKIKI";

	/** テーブル(サービス契約＿工事案件)*/
	private static final String D_TBL_NAME_KU_T_SVKEI_KOJIAK = "KU_T_SVKEI_KOJIAK";

	/** テーブル(工事関連受信情報)*/
	private static final String D_TBL_NAME_KU_T_KJ_KNRN_RCV_IF = "KU_T_KJ_KNRN_RCV_IF";

	/** SQL定義キー(KU_SELECT_001)*/
	private static final String KU_T_KJAK_TG_TKKIKI_KU_SELECT_001 = "KU_SELECT_001";

	/** テーブルアクセスクラス(工事案件対象宅内機器)*/
	private JBSbatSQLAccess db_KU_T_KJAK_TG_TKKIKI = null;

	/** テーブルアクセスクラス(サービス契約＿工事案件)*/
	private JBSbatSQLAccess db_KU_T_SVKEI_KOJIAK = null;

	/** テーブルアクセスクラス(工事関連受信情報)*/
	private JBSbatSQLAccess db_KU_T_KJ_KNRN_RCV_IF = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**▼▼▼▼▼▼業務チームで作成した宣言です 開始▼▼▼▼▼▼*/

	/** 工事関連情報の項目名Map */
	private HashMap<Object, String> indexKjKrInfoMap = new HashMap<Object, String>();
	
	/** 
	 * 工事案件番号を格納する変数 
	 */
	private String kojiakNo = null;

	/**
	 * 業務パラメタID
	 */
	/** 特殊デジタルティアグループ1 */
	private String wc_TOK_DGTIA_GRP_CD_1 = null;
	
	/**▲▲▲▲▲▲業務チームで作成した宣言です 終了▲▲▲▲▲▲*/

	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KU_T_KJAK_TG_TKKIKI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_KJAK_TG_TKKIKI);
		db_KU_T_SVKEI_KOJIAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_SVKEI_KOJIAK);
		db_KU_T_KJ_KNRN_RCV_IF = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_KJ_KNRN_RCV_IF);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// 業務パラメータ　特殊デジタルティアグループ1　取得
		wc_TOK_DGTIA_GRP_CD_1 = new JKUBatCommon().getWorkParamKnri(commonItem, JKUStrConst.WC_TOK_DGTIA_GRP_CD1);
		
		if (null == wc_TOK_DGTIA_GRP_CD_1)
		{
			// 取得できなかった場合は、ログ出力し、処理終了
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKUB0070KE, new String[]{
					JKUStrConst.SCHEMANM_ZM0321,
					"業務パラメータID",
					JKUStrConst.WC_TOK_DGTIA_GRP_CD1});
		}
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		// 工事工程を格納する変数
		String kojiStep = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.OPMS_RNKI_CD).substring(2, 3);
		
		if (JKUStrConst.KJSTEP_CHAKOMAE_KEY_OPEN_INFO.equals(kojiStep))
		{
			// 連携コード(工事工程)が「着工前鍵開け情報」
			
			/** WCIFI001_STB仮設置連携(新設用(着工前鍵開け情報)) */
			setChakomaeKeyOpenInfo(inMap, outputBean);
		}
		else if (JKUStrConst.KJSTEP_NEW_STB_KEY_OPEN_INFO.equals(kojiStep))
		{
			// 連携コード(工事工程)が「STB鍵開け情報」
			
			/** WCIFI001_STB仮設置連携(交換用(新STB鍵開け情報)) */
			setNewStbKeyOpenInfo(inMap, outputBean);
			/** KKIFI023_工事関連情報受信(STB着工情報) */
			setStbckInfo(inMap, outputBean);
		}

		// 工事関連受信情報テーブル更新処理
		// 更新する値を設定
		Object[] setParam = new Object[1];
		// 「抽出済」を設定
		setParam[0] = "2";
		
		// 更新する条件を設定
		Object[] whereParam = new Object[3];
		whereParam[0] = inMap.get(JBSbatKU_T_KJ_KNRN_RCV_IF.KOJI_KNRN_RCV_INFO_NO);
		executeKU_T_KJ_KNRN_RCV_IF_PKUPDATE(setParam, whereParam);
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼業務チームで作成したメソッドです 開始▼▼▼▼▼▼*/

	/**
	 * 出力共通電文に入出力インターフェースを設定する。
	 * @param outMap　出力情報
	 * @param outputBean　出力共通電文
	 */	
	public void setOutputBean(JBSbatServiceInterfaceMap outMap, JBSbatOutputItem outputBean)
	{
		// 出力フラグを設定
		outMap.setOutFlg(true);

		// 括り文字付与
		outMap.setMap(JKUBatCommon.addDblQuote(outMap.getMap()));
		
		// 出力共通電文に入出力インターフェースを設定する。
		outputBean.addOutMapList(outMap);
		
	}
	
	/**
	 * 出力共通電文に２つ目の入出力インターフェースを設定する。
	 * @param outMap　出力情報
	 * @param outputBean　出力共通電文
	 * @throws Exception 
	 */	
	public void setOutputBean2(JBSbatServiceInterfaceMap outMap, JBSbatOutputItem outputBean) throws Exception
	{
		// 工事関連情報の項目名Mapを取得
		indexKjKrInfoMap = setIndexKjKrInfoMap();
		
		if(null != outMap)
		{
			// カンマ編集された工事関連情報を格納する変数
			StringBuilder kjKrInfoString = new StringBuilder();
			
			// 括り文字付与
			outMap.setMap(JKUBatCommon.addDblQuote(outMap.getMap()));
			// KjKrInfoMapに格納された各項目のカンマ編集を行う
			kjKrInfoString = JKUBatCommon.editComma(outMap, indexKjKrInfoMap);
			
			// 入出力インターフェースに工事関連情報を設定する
			outMap.setString(JBSbatKKIFI023.KOJI_KNRN_INFO, kjKrInfoString);
			
			// 出力フラグを設定
			outMap.setOutFlg(true);
			
			// 出力共通電文に入出力インターフェースを設定する。
			outputBean.addOutMapList_2(outMap);
		}
	}

	/**
	 * WCIFI001_STB仮設置連携(新設用(着工前鍵開け情報))設定処理
	 * @param inMap　入力電文(工事関連受信情報)
	 * @param outputBean　出力共通電文
	 * @throws Exception
	 */	
	private void setChakomaeKeyOpenInfo(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputBean) throws Exception
	{
		// 入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outMap = null;
		
		// 工事案件対象宅内機器を格納するMap
		JBSbatCommonDBInterface kjakTgTkkikiMap = null;
		
		// STB型式番号
		String stbModel = null;
		// STB製造番号
		String stbSeizo = null;
		
		// 工事案件番号を取得する
		kojiakNo = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_3);
		
		/**
		 * 工事案件対象宅内機器よりSTB情報を取得する。
		 */
		
		// 工事案件対象宅内機器テーブル検索パラメタ設定
		// 検索する値を設定(共通)
		Object[] selectParam = null;
		
		// 連携データ５　STB型式番号1
		stbModel = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_5);
		// 連携データ６　STB製造番号1
		stbSeizo = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_6);
		if(JKUBatCommon.isNotNull(stbModel) && JKUBatCommon.isNotNull(stbSeizo))
		{
			// 検索項目設定
			selectParam = this.paramSet(kojiakNo, stbModel, stbSeizo);
			// 工事案件対象宅内機器よりSTB情報を取得する。
			kjakTgTkkikiMap = getKjakTgTkkiki(selectParam);
			
			// 出力電文に宅内機器情報を設定する
			outMap = this.setOutMapChakoMae(inMap, kjakTgTkkikiMap);
			this.setKikiInfo(inMap, outMap, JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_7);
			
			// 出力共通電文に入出力インターフェースを設定する。
			setOutputBean(outMap, outputBean);
		}
		
		// 連携データ１２　STB型式番号2
		stbModel = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_12);
		// 連携データ１３　STB製造番号2
		stbSeizo = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_13);
		if(JKUBatCommon.isNotNull(stbModel) && JKUBatCommon.isNotNull(stbSeizo))
		{
			// 検索項目設定
			selectParam = this.paramSet(kojiakNo, stbModel, stbSeizo);
			// 工事案件対象宅内機器よりSTB情報を取得する。
			kjakTgTkkikiMap = getKjakTgTkkiki(selectParam);

			// 出力電文に宅内機器情報を設定する
			outMap = this.setOutMapChakoMae(inMap, kjakTgTkkikiMap);
			this.setKikiInfo(inMap, outMap, JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_14);

			// 出力共通電文に入出力インターフェースを設定する。
			setOutputBean(outMap, outputBean);
		}

		// 連携データ１９　STB型式番号3
		stbModel = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_19);
		// 連携データ２０　STB製造番号3
		stbSeizo = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_20);
		if(JKUBatCommon.isNotNull(stbModel) && JKUBatCommon.isNotNull(stbSeizo))
		{
			// 検索項目設定
			selectParam = this.paramSet(kojiakNo, stbModel, stbSeizo);
			// 工事案件対象宅内機器よりSTB情報を取得する。
			kjakTgTkkikiMap = getKjakTgTkkiki(selectParam);

			// 出力電文に宅内機器情報を設定する
			outMap = this.setOutMapChakoMae(inMap, kjakTgTkkikiMap);
			this.setKikiInfo(inMap, outMap, JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_21);

			// 出力共通電文に入出力インターフェースを設定する。
			setOutputBean(outMap, outputBean);
		}

		// 連携データ２６　STB型式番号4
		stbModel = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_26);
		// 連携データ２７　STB製造番号4
		stbSeizo = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_27);
		if(JKUBatCommon.isNotNull(stbModel) && JKUBatCommon.isNotNull(stbSeizo))
		{
			// 検索項目設定
			selectParam = this.paramSet(kojiakNo, stbModel, stbSeizo);
			// 工事案件対象宅内機器よりSTB情報を取得する。
			kjakTgTkkikiMap = getKjakTgTkkiki(selectParam);

			// 出力電文に宅内機器情報を設定する
			outMap = this.setOutMapChakoMae(inMap, kjakTgTkkikiMap);
			this.setKikiInfo(inMap, outMap, JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_28);

			// 出力共通電文に入出力インターフェースを設定する。
			setOutputBean(outMap, outputBean);
		}
		
		// 連携データ３３　STB型式番号5
		stbModel = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_33);
		// 連携データ３４　STB製造番号5
		stbSeizo = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_34);
		if(JKUBatCommon.isNotNull(stbModel) && JKUBatCommon.isNotNull(stbSeizo))
		{
			// 検索項目設定
			selectParam = this.paramSet(kojiakNo, stbModel, stbSeizo);
			// 工事案件対象宅内機器よりSTB情報を取得する。
			kjakTgTkkikiMap = getKjakTgTkkiki(selectParam);
			
			// 出力電文に宅内機器情報を設定する
			outMap = this.setOutMapChakoMae(inMap, kjakTgTkkikiMap);
			this.setKikiInfo(inMap, outMap, JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_35);
			
			// 出力共通電文に入出力インターフェースを設定する。
			setOutputBean(outMap, outputBean);
		}
	}
	
	/**
	 * WCIFI001_STB仮設置連携(交換用(新STB鍵開け情報))設定処理
	 * @param inMap　入力電文(工事関連受信情報)
	 * @param outputBean　出力共通電文
	 * @throws Exception
	 */	
	private void setNewStbKeyOpenInfo(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputBean) throws Exception
	{
		// 入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outMap = null;
		
		// 工事案件対象宅内機器を格納するMap
		JBSbatCommonDBInterface kjakTgTkkikiMap = null;
		
		// 宅内機器異動コード
		String idoCd = null;
		
		// STB型式番号
		String stbModel = null;
		// STB製造番号
		String stbSeizo = null;
		
		// 工事案件番号を取得する
		kojiakNo = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_3);
		
		// 工事案件対象宅内機器テーブル検索パラメタ設定
		// 検索する値を設定(共通)
		Object[] selectParam = null;
		
		// 連携データ８　STB型式番号
		stbModel = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_8);
		// 連携データ９　STB製造番号
		stbSeizo = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_9);
		
		if(JKUBatCommon.isNotNull(stbModel) && JKUBatCommon.isNotNull(stbSeizo))
		{
			// 検索項目設定
			selectParam = this.paramSet(kojiakNo, stbModel, stbSeizo);
			// 工事案件対象宅内機器よりSTB情報を取得する。
			kjakTgTkkikiMap = getKjakTgTkkiki(selectParam);
			
			if (null != kjakTgTkkikiMap)
			{
				// 宅内機器異動コードを取得
				idoCd = kjakTgTkkikiMap.getString(JBSbatKU_T_KJAK_TG_TKKIKI.TAKNKIKI_IDO_CD);
			}
			
			// 入出力インターフェースオブジェクトを生成
			outMap = new JBSbatServiceInterfaceMap();
			
			// レコード種別
			outMap.set(JBSbatWCIFI001.WCTRL_REQ_TRN_CD, JKUStrConst.WCIFI001_NEW_STB_KEY_OPEN_IF);
			// 工事案件番号
			outMap.set(JBSbatWCIFI001.KOJIAK_NO, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_3));
			// サービス契約番号
			outMap.set(JBSbatWCIFI001.SVC_KEI_NO, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.SVC_KEI_NO));
			// 新宅内機器型式コード
			outMap.set(JBSbatWCIFI001.NEW_STB_TAKNKIKI_MODEL_CD, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_8));
			// 新機器製造番号
			outMap.set(JBSbatWCIFI001.NEW_KK_SEIZO_NO, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_9));
			// 新ＳＴＢＩＤ 
			outMap.set(JBSbatWCIFI001.NEW_STB_ID, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_10));
			
			// 異動区分が「交換」の場合のみ設定
			if (JKUStrConst.CD00562_KOKAN.equals(idoCd))
			{
				// 旧宅内機器型式コード
				outMap.set(JBSbatWCIFI001.OLD_STB_TAKNKIKI_MODEL_CD, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_5));
				// 旧機器製造番号
				outMap.set(JBSbatWCIFI001.OLD_KK_SEIZO_NO, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_6));
				// 旧ＳＴＢＩＤ
				outMap.set(JBSbatWCIFI001.OLD_STB_ID, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_7));
			}
			
			// 工事移動フラグ
			outMap.set(JBSbatWCIFI001.TK_KK_IDO_CD, idoCd);
			// ティアグループコード
			outMap.set(JBSbatWCIFI001.DGTIA_GRP, wc_TOK_DGTIA_GRP_CD_1);
			
			// 出力共通電文に入出力インターフェースを設定する。
			setOutputBean(outMap, outputBean);
		}
	}

	/**
	 * KKIFI023_工事関連情報受信(STB着工情報)設定処理
	 * @param inMap　入力電文(工事関連受信情報)
	 * @param outputBean　出力共通電文
	 * @throws Exception
	 */	
	private void setStbckInfo(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputBean) throws Exception
	{
		// 入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outMap = null;
		
		// 工事案件対象宅内機器を格納するMap
		JBSbatCommonDBInterface kjakTgTkkikiMap = null;
		// サービス契約＿工事案件を格納するMap
		JBSbatCommonDBInterface svkeiKojiakMap = null;
		// 機器提供サービス契約番号を格納する変数
		String kikiTkSvkeiNo = null;
		// サービス契約番号を格納する変数
		String svkeiNo = null;
		// サービス契約回線内訳番号を格納する変数
		String svkeiKaisenUcwkNo = null;
		
		// STB型式番号
		String stbModel = null;
		// STB製造番号
		String stbSeizo = null;
		
		// 新規変更区分
		String newChgkbn = null;
		
		// 工事案件番号を取得する
		kojiakNo = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_3);
		
		/**
		 * 工事案件対象宅内機器よりSTB情報を取得する。
		 */
		
		Object[] selectParam = null;
		
		// 連携データ８　STB型式番号
		stbModel = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_8);
		// 連携データ９　STB製造番号
		stbSeizo = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_9);
		if(JKUBatCommon.isNotNull(stbModel) && JKUBatCommon.isNotNull(stbSeizo))
		{
			// 検索項目設定
			selectParam = this.paramSet(kojiakNo, stbModel, stbSeizo);
			
			// 工事案件対象宅内機器よりSTB情報を取得する。
			kjakTgTkkikiMap = getKjakTgTkkiki(selectParam);
		}
		
		if (null != kjakTgTkkikiMap)
		{
			// 機器提供サービス契約番号
			kikiTkSvkeiNo = kjakTgTkkikiMap.getString(JBSbatKU_T_KJAK_TG_TKKIKI.KKTK_SVC_KEI_NO);
		}
		
		/**
		 * サービス契約＿工事案件よりサービス契約情報を取得する。
		 */
		// サービス契約＿工事案件検索パラメータ設定
		Object[] selectParam2 = new Object[3];
		// サービス契約番号
		selectParam2[0] = inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.SVC_KEI_NO);
		// 工事案件番号
		selectParam2[1] = kojiakNo;
		
		// サービス契約工事案件よりサービス契約番号・サービス契約回線内訳番号を取得する
		svkeiKojiakMap = getSvkeiKojiakMap(selectParam2);
		if (null != svkeiKojiakMap)
		{
			// サービス契約番号
			svkeiNo = svkeiKojiakMap.getString(JBSbatKU_T_SVKEI_KOJIAK.SVC_KEI_NO);
			// サービス契約回線内訳番号
			svkeiKaisenUcwkNo = svkeiKojiakMap.getString(JBSbatKU_T_SVKEI_KOJIAK.SVC_KEI_KAISEN_UCWK_NO);
		}
		
		// 新規変更区分
		if (JKUStrConst.OPMS_NEWCHG_DIV_NEW.equals(inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.OPMS_RNKI_CD).substring(3, 4)))
		{
			newChgkbn = JKUStrConst.KKIFI023_NEWCHG_DIV_NEW;
		}
		else if (JKUStrConst.OPMS_NEWCHG_DIV_CHG.equals(inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.OPMS_RNKI_CD).substring(3, 4)))
		{
			newChgkbn = JKUStrConst.KKIFI023_NEWCHG_DIV_CHG;
		}
		
		/**
		 * STB着工情報を設定する
		 */
		// 入出力インターフェースオブジェクトを生成
		outMap = new JBSbatServiceInterfaceMap();
		
		// レコード区分
		outMap.set(JBSbatKUIFM003.REC_KBN, JKUStrConst.KKIFI023_STB_CHAKO_INFO);
		// サービス契約番号
		outMap.set(JBSbatKUIFM003.SVC_KEI_NO, svkeiNo);
		// サービス契約回線内訳番号
		outMap.set(JBSbatKUIFM003.SVC_KEI_KAISEN_UCWK_NO, svkeiKaisenUcwkNo);
		// 連携年月日
		outMap.set(JBSbatKUIFM003.RENKEI_YMD, super.opeDate);
		// 通番
		outMap.set(JBSbatKUIFM003.SEQ, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.KOJI_KNRN_RCV_INFO_NO));
		// 新規変更区分
		outMap.set(JBSbatKUIFM003.NEW_CHG_DIV, newChgkbn);
		// 工事案件種別コード
		outMap.set(JBSbatKUIFM003.KOJIAK_SBT_CD, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_1));
		// 工事案件番号
		outMap.set(JBSbatKUIFM003.KOJIAK_NO, kojiakNo);
		// 機器提供サービス契約番号
		outMap.set(JBSbatKUIFM003.KMK_1, kikiTkSvkeiNo);
		// STB-ID
		outMap.set(JBSbatKUIFM003.KMK_2, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_10));
		// 機器製造番号（B-CAS）
		outMap.set(JBSbatKUIFM003.KMK_3, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_12));
		// 機器製造番号（C-CAS）
		outMap.set(JBSbatKUIFM003.KMK_4, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_14));

		setOutputBean2(outMap, outputBean);
	}

	/**
	 * WCIFI001_STB仮設置連携(新設用(着工前鍵開け情報))の共通項目設定
	 * @param inMap　入力電文
	 * @param kjakTgTkkikiMap　工事案件対象宅内機器検索結果
	 * @return JBSbatServiceInterfaceMap　出力電文
	 * @throws Exception
	 */	
	private JBSbatServiceInterfaceMap setOutMapChakoMae(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface kjakTgTkkikiMap) throws Exception
	{
		// 入出力インターフェースオブジェクトを初期化
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		// 移動区分を格納する変数
		String idoKb = null;

		if (null != kjakTgTkkikiMap)
		{
			// 移動区分
			idoKb = kjakTgTkkikiMap.getString(JBSbatKU_T_KJAK_TG_TKKIKI.TAKNKIKI_IDO_CD);
		}
		// 出力電文を設定する
		// レコード種別
		outMap.set(JBSbatWCIFI001.WCTRL_REQ_TRN_CD, JKUStrConst.WCIFI001_CHAKOMAE_KEY_OPEN_IF);
		// 工事案件番号
		outMap.set(JBSbatWCIFI001.KOJIAK_NO, kojiakNo);
		// サービス契約番号
		outMap.set(JBSbatWCIFI001.SVC_KEI_NO, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.SVC_KEI_NO));
		// 工事移動フラグ
		outMap.set(JBSbatWCIFI001.TK_KK_IDO_CD, idoKb);
		// ティアグループコード
		outMap.set(JBSbatWCIFI001.DGTIA_GRP, wc_TOK_DGTIA_GRP_CD_1);
		
		return outMap;
	}

	/**
	 * WCIFI001_STB仮設置連携(新設用(着工前鍵開け情報))設定
	 * @param inMap　入力電文
	 * @param outMap　出力電文
	 * @param renkiData　連携データ
	 * @throws Exception
	 */	
	private void setKikiInfo(JBSbatServiceInterfaceMap inMap, JBSbatServiceInterfaceMap outMap, String renkiData) throws Exception
	{
		// 連携データに応じて新宅内機器型式コード、新機器製造番号、新ＳＴＢＩＤを設定する
		
		// 着工前鍵開け情報
		if (JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_7.equals(renkiData))
		{
			outMap.set(JBSbatWCIFI001.NEW_STB_TAKNKIKI_MODEL_CD, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_5));
			outMap.set(JBSbatWCIFI001.NEW_KK_SEIZO_NO, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_6));
			outMap.set(JBSbatWCIFI001.NEW_STB_ID, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_7));
		}
		else if(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_14.equals(renkiData))
		{
			outMap.set(JBSbatWCIFI001.NEW_STB_TAKNKIKI_MODEL_CD, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_12));
			outMap.set(JBSbatWCIFI001.NEW_KK_SEIZO_NO, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_13));
			outMap.set(JBSbatWCIFI001.NEW_STB_ID, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_14));
		}
		else if(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_21.equals(renkiData))
		{
			outMap.set(JBSbatWCIFI001.NEW_STB_TAKNKIKI_MODEL_CD, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_19));
			outMap.set(JBSbatWCIFI001.NEW_KK_SEIZO_NO, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_20));
			outMap.set(JBSbatWCIFI001.NEW_STB_ID, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_21));
		}
		else if(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_28.equals(renkiData))
		{
			outMap.set(JBSbatWCIFI001.NEW_STB_TAKNKIKI_MODEL_CD, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_26));
			outMap.set(JBSbatWCIFI001.NEW_KK_SEIZO_NO, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_27));
			outMap.set(JBSbatWCIFI001.NEW_STB_ID, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_28));
		}
		else if(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_35.equals(renkiData))
		{
			outMap.set(JBSbatWCIFI001.NEW_STB_TAKNKIKI_MODEL_CD, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_33));
			outMap.set(JBSbatWCIFI001.NEW_KK_SEIZO_NO, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_34));
			outMap.set(JBSbatWCIFI001.NEW_STB_ID, inMap.getString(JBSbatKU_T_KJ_KNRN_RCV_IF.RENKEI_DATA_35));
		}

	}
	
	/**
	 * 工事案件対象宅内機器情報を取得します
	 * @param whereParam　検索条件
	 * @return JBSbatCommonDBInterface　検索結果
	 * @throws Exception
	 */	
	private JBSbatCommonDBInterface getKjakTgTkkiki(Object[] whereParam) throws Exception
	{
		JBSbatCommonDBInterface kjakTgTkkikiMap = new JBSbatCommonDBInterface();
		// 工事案件番号がNULLでない場合のみ実行する
		if (JKUBatCommon.isNotNull(whereParam[0]))
		{
			// 検索処理実行(工事案件対象宅内機器)
			this.executeKU_T_KJAK_TG_TKKIKI_KU_SELECT_001(whereParam);
			// 検索結果を１件取得する
			kjakTgTkkikiMap = db_KU_T_KJAK_TG_TKKIKI.selectNext();
		}
		return kjakTgTkkikiMap;
	}
	
	/**
	 * サービス契約＿工事案件情報を取得します
	 * @param whereParam　検索条件
	 * @return JBSbatCommonDBInterface　検索結果
	 * @throws Exception
	 */	
	private JBSbatCommonDBInterface getSvkeiKojiakMap(Object[] whereParam) throws Exception
	{
		JBSbatCommonDBInterface svkeiKojiakMap = new JBSbatCommonDBInterface();
		// 工事案件番号がNULLでない場合のみ実行する
		if (JKUBatCommon.isNotNull(whereParam[0]) && JKUBatCommon.isNotNull(whereParam[1]))
		{
			// 検索処理実行(工事案件対象宅内機器)
			svkeiKojiakMap = this.executeKU_T_SVKEI_KOJIAK_PKSELECT(whereParam);
		}
		return svkeiKojiakMap;
	}

	/**
	 * 工事関連情報の項目名Mapを設定します。
	 * @return 工事関連情報の項目名Map
	 */
	private HashMap<Object, String> setIndexKjKrInfoMap() 
	{
		this.indexKjKrInfoMap.put(0, JBSbatKUIFM003.REC_KBN);
		this.indexKjKrInfoMap.put(1, JBSbatKUIFM003.SVC_KEI_NO);
		this.indexKjKrInfoMap.put(2, JBSbatKUIFM003.SVC_KEI_KAISEN_UCWK_NO);
		this.indexKjKrInfoMap.put(3, JBSbatKUIFM003.RENKEI_YMD);
		this.indexKjKrInfoMap.put(4, JBSbatKUIFM003.SEQ);
		this.indexKjKrInfoMap.put(5, JBSbatKUIFM003.NEW_CHG_DIV);
		this.indexKjKrInfoMap.put(6, JBSbatKUIFM003.KOJIAK_SBT_CD);
		this.indexKjKrInfoMap.put(7, JBSbatKUIFM003.KOJIAK_NO);
		this.indexKjKrInfoMap.put(8, JBSbatKUIFM003.KMK_1);
		this.indexKjKrInfoMap.put(9, JBSbatKUIFM003.KMK_2);
		this.indexKjKrInfoMap.put(10, JBSbatKUIFM003.KMK_3);
		this.indexKjKrInfoMap.put(11, JBSbatKUIFM003.KMK_4);

		return indexKjKrInfoMap;
	}
	
	
	/**
	 * 工事案件対象宅内機器 KU_SELECT_001用検索項目設定メソッド
	 * @param kojiAkNo 工事案件番号
	 * @param stbModel STB型式番号
	 * @param stbSeizo STB製造番号
	 * @return 検索項目
	 */
	private Object[] paramSet(String kojiAkNo, String stbModel, String stbSeizo)
	{
		
		Object[] selectParam = new Object[3];
		
		selectParam[0] = kojiAkNo;
		selectParam[1] = stbModel;
		selectParam[2] = stbSeizo;
		
		return selectParam;
	}
	
	/**▲▲▲▲▲▲業務チームで作成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KU_T_KJAK_TG_TKKIKI.close();
		db_KU_T_SVKEI_KOJIAK.close();
		db_KU_T_KJ_KNRN_RCV_IF.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KU_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	工事案件番号
	 *		 	宅内機器型式コード
	 *		 	機器製造番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKU_T_KJAK_TG_TKKIKI_KU_SELECT_001(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_KU_T_KJAK_TG_TKKIKI.selectBySqlDefine(paramList, KU_T_KJAK_TG_TKKIKI_KU_SELECT_001);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	SVC_KEI_NO
	 *		 	KOJIAK_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKU_T_SVKEI_KOJIAK_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("SVC_KEI_NO", whereParam[0]);
		whereMap.setValue("KOJIAK_NO", whereParam[1]);

		// DBアクセスを実行します
		return db_KU_T_SVKEI_KOJIAK.selectByPrimaryKeys(whereMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	抽出フラグ				CHSHT_FLG
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	KOJI_KNRN_RCV_INFO_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKU_T_KJ_KNRN_RCV_IF_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("CHSHT_FLG", setParam[0]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("KOJI_KNRN_RCV_INFO_NO", whereParam[0]);

		// DBアクセスを実行します
		db_KU_T_KJ_KNRN_RCV_IF.updateByPrimaryKeys(whereMap, setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
