/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKAdEmgSODSendOutput
*	ソースファイル名	：JBSbatKKAdEmgSODSendOutput.java
*	作成者				：富士通　
*	作成日				：2012年09月01日
*＜機能概要＞
*　緊急通報SOD送信データ作成クラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00    2012/09/01  富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.common.JZMBatCommon;
import eo.business.util.file.JBSbatKKIFE101;
import eo.business.util.table.JBSbatKK_T_CHG_AD_JGRTWK;
import eo.common.util.JPCUtilCommon;
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;

/**
* 緊急通報SOD送信データ作成クラスです。<p>
*<BR>
* @author 富士通
*/
public class JBSbatKKAdEmgSODSendOutput extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** オーダ発行条件番号シーケンス .*/
	private static final String SEQ_ODR_HAKKO_JOKEN_NO = "SEQ_ODR_HAKKO_JOKEN_NO";
	/** オーダ種別:緊急通報 .*/
	private static final String ORDER_HAKKO_JOKEN_ORDER_SBT_CD = "4";
	/** サービスオーダコード:緊急通報 .*/
	private static final String ORDER_HAKKO_JOKEN_SVC_ORDER_CD = "24";
	/** 要求種別コード:変更 .*/
	private static final String ORDER_HAKKO_JOKEN_YOKYU_SBT_CD = "04";
	/** 発行条件コード:即時発行 .*/
	private static final String ORDER_HAKKO_JOKEN_ODR_HAKKO_JOKEN_CD = "01";
	/** シーケンス番号桁数 .*/
	private static final int SEQ_KETA = 12;

	/** オーダ情報作成ワーク番号シーケンス .*/
	private static final String SEQ_ODR_INF_SKSI_WK_NO = "SEQ_ODR_INF_SKSI_WK_NO";
	/** オーダ内容コード:緊急通報・変更 .*/
	private static final String ORDER_INF_WORK_ORDER_NAIYO_CD = "251";

	/** テーブルアクセスクラス*/
	private JBSbatSQLAccess db_KK_T_ODR_HAKKO_JOKEN = null;
	private JBSbatSQLAccess db_KK_T_ODR_INF_SKSI_WK = null;
	private JBSbatSQLAccess db_CHG_AD_JGRTWK = null;

	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスを生成します
		db_KK_T_ODR_HAKKO_JOKEN = new JBSbatSQLAccess(commonItem, "KK_T_ODR_HAKKO_JOKEN");
		db_KK_T_ODR_INF_SKSI_WK = new JBSbatSQLAccess(commonItem, "KK_T_ODR_INF_SKSI_WK");
		db_CHG_AD_JGRTWK = new JBSbatSQLAccess(commonItem, "KK_T_CHG_AD_JGRTWK");

		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{

	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
			
		/** オーダ発行条件の作成 */
		String order_no = JCCBatCommon.getFormatedNextSeq(commonItem, SEQ_ODR_HAKKO_JOKEN_NO, "", SEQ_KETA);
		String svc_kei_cd = JZMBatCommon.getInMapData(inMap, "SVC_KEI_NO");
		String svc_kei_ucwk_cd = JZMBatCommon.getInMapData(inMap, "SVC_KEI_UCWK_NO");
		String strChgAdJgrtwkNo = JZMBatCommon.getInMapData(inMap, "CHG_AD_JGRTWK_NO");

		// パラメタを設定する
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		dbList. setValue(order_no);
		dbList. setValue(svc_kei_cd);
		dbList. setValue(svc_kei_ucwk_cd);
		dbList. setValue(ORDER_HAKKO_JOKEN_ORDER_SBT_CD);
		dbList. setValue(ORDER_HAKKO_JOKEN_SVC_ORDER_CD);
		dbList. setValue(ORDER_HAKKO_JOKEN_YOKYU_SBT_CD);
		dbList. setValue(ORDER_HAKKO_JOKEN_ODR_HAKKO_JOKEN_CD);

		//INSERT文を実行する。
		db_KK_T_ODR_HAKKO_JOKEN.executeBySqlDefine(dbList,"KK_INSERT_002");
		
		
		/** オーダ情報作成ワークの作成 */
		// オーダー情報作成ワーク番号
		String orderInfoCd = JKKBatCommon.getFormatedNextSeq(commonItem, SEQ_ODR_INF_SKSI_WK_NO, "", SEQ_KETA);

		// パラメタを設定する
		dbList = new JBSbatCommonDBInterface();
		dbList. setValue(orderInfoCd);
		dbList. setValue(order_no);
		dbList. setValue(ORDER_INF_WORK_ORDER_NAIYO_CD);
		dbList. setValue(svc_kei_cd);
		dbList. setValue(JZMBatCommon.getInMapData(inMap, "GENE_ADD_DTM"));
		dbList. setValue(svc_kei_ucwk_cd);
		dbList. setValue(JZMBatCommon.getInMapData(inMap, "GENE_ADD_DTM_UCWK"));
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);
		dbList. setValue(null);

		//INSERT文を実行する。
		db_KK_T_ODR_INF_SKSI_WK.executeBySqlDefine(dbList,"KK_INSERT_001");
		
		
		/** 緊急通報SOD送信ファイルの作成 */
		HashMap<String, String> rsMap = new HashMap<String, String>();
		
		rsMap.put(JBSbatKKIFE101.SVC_KEI_NO, JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.SVC_KEI_NO));
		if (null != inMap.getString(JBSbatKK_T_CHG_AD_JGRTWK.NEW_AD_CD)) {
			// 住所１
			String strNEW_ADD1 = JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.NEW_STATE_NM)
								+ JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.NEW_CITY_NM)
								+ JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.NEW_OAZTSU_NM)
								+ JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.NEW_AZCHO_NM);
			rsMap.put(JBSbatKKIFE101.AD_CD, JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.NEW_AD_CD));
			//***<< 2012/10/15 KT1-2013-0000250 3桁目と4桁目の間に -(ﾊｲﾌﾝ)を付与 K.IWASA upd [S] >>***/
			//rsMap.put(JBSbatKKIFE101.PCD, JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.NEW_PCD));
			rsMap.put(JBSbatKKIFE101.PCD, JPCUtilCommon.hyhunPcd(JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.NEW_PCD)));
			//***<< 2012/10/15 KT1-2013-0000250 3桁目と4桁目の間に -(ﾊｲﾌﾝ)を付与 K.IWASA upd [E] >>***/
			rsMap.put(JBSbatKKIFE101.ADD1, strNEW_ADD1);
		} else {
			// 住所１
			String strOLD_ADD1 = JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.STATE_NM)
							+ JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.CITY_NM)
							+ JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.OAZTSU_NM)
							+ JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.AZCHO_NM);
			rsMap.put(JBSbatKKIFE101.AD_CD, JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.AD_CD));
			//***<< 2012/10/15 KT1-2013-0000250 3桁目と4桁目の間に -(ﾊｲﾌﾝ)を付与 K.IWASA upd [S] >>***/
			//rsMap.put(JBSbatKKIFE101.PCD, JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.PCD));
			rsMap.put(JBSbatKKIFE101.PCD, JPCUtilCommon.hyhunPcd(JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.PCD)));
			//***<< 2012/10/15 KT1-2013-0000250 3桁目と4桁目の間に -(ﾊｲﾌﾝ)を付与 K.IWASA upd [E] >>***/
			rsMap.put(JBSbatKKIFE101.ADD1, strOLD_ADD1);
		}
		// 住所２
		String strADD2 = JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.OLD_BNCHIGO);
		// 住所３
		String strADD3 = JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.OLD_ADRTTM)
						+ JZMBatCommon.getInMapData(inMap, JBSbatKK_T_CHG_AD_JGRTWK.OLD_ADRRM);
		rsMap.put(JBSbatKKIFE101.ADD2, strADD2);
		rsMap.put(JBSbatKKIFE101.ADD3, strADD3);
		
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		outMap.setMap(rsMap);
		
		// 出力フラグを設定
		outMap.setOutFlg(true);
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		// 出力共通電文に入出力インターフェースを設定する。
		outputBean.addOutMapList(outMap);

		// 変更対象住所一覧ワークの処理ステータスの更新
		//パラメタを設定（SET句）
		JBSbatCommonDBInterface valueMap = new JBSbatCommonDBInterface ();
		valueMap. setValue("AD_TOHAIGO_TRN_STAT_CD", JKKBatConst.HENKO_ADD_CD_ZM);

		//パラメタを設定（WHERE句）
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface ();
		whereMap. setValue("CHG_AD_JGRTWK_NO", strChgAdJgrtwkNo);

		//UPDATE文を実行する。
		db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap);
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
		
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_ODR_HAKKO_JOKEN.close();
		db_KK_T_ODR_INF_SKSI_WK.close();
		db_CHG_AD_JGRTWK.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}


	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
