/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCKCustChgRsvKojiHanei
*	ソースファイル名	：JBSbatCKCustChgRsvKojiHanei.java
*	作成者				：FJ)藤井
*	作成日				：2017年11月09日
*＜機能概要＞
*	お客様情報変更未来予約工事反映部品です.
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v31.00.00	2017/11/09  FJ)藤井		新規作成【ANK-3136-00-00】OPMSハードウエア保守切れ対応(STEP2-2)
*   v39.00.00	2018/09/02	FJ)澤田		【ANK-3458-00-00】契約者氏名変更時の副次処理を追加（緊急通報氏名の更新）
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessBase;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JCCBatchEsbInterface;

/**
* お客様情報変更未来予約工事反映部品です. <p>
*<BR>
* @author 富士通
*/
public class JBSbatCKCustChgRsvKojiHanei extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** お客様名変更時工事案件反映CCマップ リクエストキー */
	private static final String CKSV006201CC = "CKSV006201CC";
	// ANK-3458-00-00 ADD START
	/** 緊急通報用契約者名・カナ名更新処理CCマップ リクエストキー */
	private static final String CKSV006202CC = "CKSV006202CC";
	// ANK-3458-00-00 ADD END
	/** 作業領域マップ リクエストキー */
	private static final String CKSV0009WORK01 = "CKSV0009WORK01";
	
	/** お客様情報変更未来予約工事反映サービス ユースケースID */
	private static final String USECASE_ID = "CKSV0062";
	
	/** お客様情報変更未来予約工事反映 オペレーションID */
	private static final String OPERATION_ID = "CKSV0062OP";
	// ANK-3458-00-00 ADD START
	/** コード種別 異動区分 お客様情報変更 */
	private static final String CD00576_CUST_INFO_CHG = "00012";
	// ANK-3458-00-00 ADD END
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください.▼▼▼▼▼▼*/

		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください.▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap 入力電文
	 * @return JBSbatOutputItem 出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		try
		{
			HashMap<String, Object> paramMap = new HashMap<String, Object>();
			// サービスに渡す業務データを格納するMAP
			HashMap<String, Object> inputMap = new HashMap<String, Object>();
			// サービスの処理結果が格納されるMAP
			HashMap<String, Object> outputMap = new HashMap<String, Object>();
			
			// サービスＩＤのセット
			paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, USECASE_ID);
			paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, OPERATION_ID);
			
			// inputMapにCCに必要な情報をセットする
			inputMap.put(CKSV006201CC, setCKSV006201CC(inMap));
			// ANK-3458-00-00 ADD START
			inputMap.put(CKSV006202CC, setCKSV006202CC(inMap));
			// ANK-3458-00-00 ADD END
			inputMap.put(CKSV0009WORK01, setCKSV0009WORK01(inMap));
			
			
			// お客様情報変更未来予約工事反映サービスを呼び出す
			JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
			
			// BPサービスの戻り値をチェック
			String returnCode = outputMap.get(JCCBatchEsbInterface.RETURN_CODE).toString();
			if (!JCCBatchEsbInterface.RETURN_CODE_SUCCESS.equals(returnCode))
			{
				throw new Exception();
			}
			
			// コメントをログ出力する.
			super.logPrint.printLogMsg(JBSbatBusinessBase.SYSTEM_INFORMATION, "登録処理が正常終了しました.");
		} 
		catch (Exception e) 
		{
			String sysid = inMap.getString(JBSbatCK_T_CUST.SYSID);
			// エラーログ出力
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW,
					new String[]{"SYSID：" + sysid});
			
			// エラーフラグ設定
			super.commonItem.setErrFlg(true);
		}
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください.▲▲▲▲▲▲*/
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください.▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください.▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	
	/**
	 * 上りマッピングをする
	 * @param inMap 入力電文
	 * @return HashMap<String, Object> 処理結果
	 * @throws Exception 
	 */
	private HashMap<String, Object> setCKSV006201CC(JBSbatServiceInterfaceMap inMap) throws Exception 
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 入力DB.ＫＥＹ＿サービス契約番号 →お客様情報変更未来予約工事反映CCマップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", inMap.getString("SVC_KEI_NO"));
		// 入力DB.ＫＥＹ＿運用日付 →お客様情報変更未来予約工事反映CCマップ.ＫＥＹ＿運用日付
		parentMap.put("key_opedate", super.opeDate);
		// 入力DB.ＫＥＹ＿システム日付 →お客様情報変更未来予約工事反映CCマップ.ＫＥＹ＿システム日付
		parentMap.put("key_system_dtm", JBSbatDateUtil.getSystemDateTimeStamp());
		// 入力DB.SYSID →お客様情報変更未来予約工事反映CCマップ.SYSID
		parentMap.put("sysid", inMap.getString(JBSbatCK_T_CUST.SYSID));
		// 入力DB.お客様名 →お客様情報変更未来予約工事反映CCマップ.お客様名
		parentMap.put("cust_nm", inMap.getString(JBSbatCK_T_CUST. CUST_NM));
		//お客様情報変更未来予約工事反映CCマップ.お客様名変更フラグ
		parentMap.put("cust_nm_chg_flg", true);
		// 入力DB.お客様カナ名 → お客様情報変更未来予約工事反映CCマップ.お客様カナ名
		parentMap.put("cust_kana", inMap.getString(JBSbatCK_T_CUST.CUST_KANA));
		// お客様情報変更未来予約工事反映CCマップ.お客様カナ名変更フラグ
		parentMap.put("cust_kana_chg_flg", true);
		// 入力DB.契約者電話番号 →お客様情報変更未来予約工事反映CCマップ.契約者電話番号
		parentMap.put("gen_tel_no", inMap.getString(JBSbatCK_T_CUST.KEISHA_TELNO));
		// 入力DB.お客様携帯電話番号 → お客様情報変更未来予約工事反映CCマップ.お客様携帯電話番号
		parentMap.put("cust_ktai_tel_no", inMap.getString("KEITAI_TELNO"));
		// お客様情報変更未来予約工事反映CCマップ.お客様携帯電話番号フラグ
		parentMap.put("cust_ktai_tel_no_chg_flg", true);
		// 入力DB.お客様連絡先電話番号 → お客様情報変更未来予約工事反映CCマップ.お客様連絡先電話番号
		parentMap.put("cust_rrks_tel_no", inMap.getString("KINM_RRSK_TELNO"));
		// お客様情報変更未来予約工事反映CCマップ.お客様連絡先電話番号フラグ
		parentMap.put("cust_rrks_tel_no_chg_flg", true);
		// 入力DB.連絡先勤務先名 → お客様情報変更未来予約工事反映CCマップ.連絡先勤務先名
		parentMap.put("rrks_offc_nm", inMap.getString("KINMSAKI_NM"));
		// お客様情報変更未来予約工事反映CCマップ.連絡先勤務先名フラグ
		parentMap.put("rrks_offc_nm_chg_flg", true);
		// 入力DB.契約者住所コード → お客様情報変更未来予約工事反映CCマップ.契約者住所コード
		parentMap.put("keisha_ad_cd", inMap.getString(JBSbatCK_T_CUST.KEISHA_AD_CD));
		// お客様情報変更未来予約工事反映CCマップ.契約者住所コードフラグ
		parentMap.put("keisha_ad_cd_chg_flg", true);
		// 入力DB.契約者郵便番号 → お客様情報変更未来予約工事反映CCマップ.契約者郵便番号
		parentMap.put("keisha_pcd", inMap.getString(JBSbatCK_T_CUST.KEISHA_PCD));
		// お客様情報変更未来予約工事反映CCマップ.契約者郵便番号フラグ
		parentMap.put("keisha_pcd_chg_flg", true);
		// 入力DB.契約者都道府県名 → お客様情報変更未来予約工事反映CCマップ.契約者都道府県名
		parentMap.put("keisha_state_nm", inMap.getString(JBSbatCK_T_CUST.KEISHA_STATE_NM));
		// お客様情報変更未来予約工事反映CCマップ.契約者都道府県名フラグ
		parentMap.put("keisha_state_nm_chg_flg", true);
		// 入力DB.契約者市区町村名 → お客様情報変更未来予約工事反映CCマップ.契約者市区町村名
		parentMap.put("keisha_city_nm", inMap.getString(JBSbatCK_T_CUST.KEISHA_CITY_NM));
		// お客様情報変更未来予約工事反映CCマップ.契約者市区町村名フラグ
		parentMap.put("keisha_city_nm_chg_flg", true);
		// 入力DB.契約者大字通称名 → お客様情報変更未来予約工事反映CCマップ.契約者大字通称名
		parentMap.put("keisha_oaztsu_nm", inMap.getString(JBSbatCK_T_CUST.KEISHA_OAZTSU_NM));
		// お客様情報変更未来予約工事反映CCマップ.契約者大字通称名フラグ
		parentMap.put("keisha_oaztsu_nm_chg_flg", true);
		// 入力DB.契約者字丁目名 → お客様情報変更未来予約工事反映CCマップ.契約者字丁目名
		parentMap.put("keisha_azcho_nm", inMap.getString(JBSbatCK_T_CUST.KEISHA_AZCHO_NM));
		// お客様情報変更未来予約工事反映CCマップ.契約者字丁目名フラグ
		parentMap.put("keisha_azcho_nm_chg_flg", true);
		// 入力DB.契約者住所番地号 → お客様情報変更未来予約工事反映CCマップ.契約者住所番地号
		parentMap.put("keisha_ad_bnchigo", inMap.getString(JBSbatCK_T_CUST.KEISHA_BNCHIGO));
		// お客様情報変更未来予約工事反映CCマップ.契約者住所番地号フラグ
		parentMap.put("keisha_ad_bnchigo_chg_flg", true);
		// 入力DB.契約者住所補記・建物名 → お客様情報変更未来予約工事反映CCマップ.契約者住所補記・建物名
		parentMap.put("keisha_adrttm", inMap.getString(JBSbatCK_T_CUST.KEISHA_ADRTTM));
		// お客様情報変更未来予約工事反映CCマップ.契約者住所補記・建物名フラグ
		parentMap.put("keisha_adrttm_chg_flg", true);
		// 入力DB.契約者住所補記・部屋番号 → お客様情報変更未来予約工事反映CCマップ.契約者住所補記・部屋番号
		parentMap.put("keisha_adrrm", inMap.getString(JBSbatCK_T_CUST.KEISHA_ADRRM));
		// お客様情報変更未来予約工事反映CCマップ.契約者住所補記・部屋番号フラグ
		parentMap.put("keisha_adrrm_chg_flg", true);
		
		return parentMap;
	}
	// ANK-3458-00-00 ADD START
	/**
	 * 上りマッピングをする
	 * @param inMap 入力電文
	 * @return HashMap<String, Object> 処理結果
	 * @throws Exception 
	 */
	private HashMap<String, Object> setCKSV006202CC(JBSbatServiceInterfaceMap inMap) throws Exception 
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 入力DB.SYSID →お客様情報変更未来予約工事反映CCマップ.SYSID
		parentMap.put("sysid", inMap.getString(JBSbatCK_T_CUST.SYSID));
		// 入力DB.idodiv →緊急通報用契約者名・カナ名更新処理CCマップ.idodiv
		parentMap.put("ido_div", CD00576_CUST_INFO_CHG);
		
		return parentMap;
	}
	// ANK-3458-00-00 ADD END
	/**
	 * 上りマッピングをする
	 * @param inMap 入力電文
	 * @return HashMap<String, Object> 処理結果
	 * @throws Exception 
	 */
	private HashMap<String, Object> setCKSV0009WORK01(JBSbatServiceInterfaceMap inMap) throws Exception 
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 予約フラグ
		parentMap.put("rsv_flg", false);
		
		return parentMap;
	}
}