/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：取扱コードマスタ詳細
*   ソースファイル名：KKW10710SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年09月07日
*＜機能概要＞
*   取扱コードマスタ詳細を行う。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/09/07   FJ）横井    新規作成
*
**********************************************************************/
package eo.web.webview.KKW10710SF;

import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW10702SF.KKW10702SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKAgntScreenUtil;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0649_KKSV0649OPDBMapper;

/**
 * 取扱コードマスタ詳細を行う。<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW10710SFLogic extends JCCWebBusinessLogic 
{
	/** 選択代理店引継リスト */
	private static final String SELECT_AGNT_HKTGI_LIST = "選択代理店引継リスト";

	/** ハイフン */
	private static final String HYHUN = "-";
	
	/**
	 * 初期表示処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionInit() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// (1) 引継情報の取得
		// セッション情報取得・引継情報をDataBeanにセット
		getSessionKKW10710SFBean(paramBean[0]);
		
		// (2) サービスフォームBean設定処理（オンライン運用日付の取得）
		// 運用年月日
		String unyo_ymd = JCCWebCommon.getOpeDate(this, null);
		paramBean[0].sendMessageString(KKW10710SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
		// ＫＥＹ＿予約適用年月日
		paramBean[0].sendMessageString(KKW10710SFConst.KEY_RSV_APLY_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
		
		// (3) サービス呼出処理
		// (4) サービス処理結果の取得
		// 取扱コードマスタ詳細初期表示サービスの実行・取得
		executeInitSvc(paramBean);
		
		// (5)表示内容編集
		// 20130219 OT-2013-0000179 DEL START
		//// 取扱コードを取扱コード、チェックディジットに分割する。（※設定されていない場合は変換しない）
		//setAgntCdData(paramBean);
		// 20130219 OT-2013-0000179 DEL END
		
		// 年月日をyyyy/mm/ddに変換する。（※設定されていない場合は変換しない）
		setYmdData(paramBean);
		
		// 住所コードをnn-nnn-nnn-nnnに変換する。（※設定されていない場合は変換しない）
		setAdCdData(paramBean);
		
		// 郵便番号をnnn-nnnnに変換する。（※設定されていない場合は変換しない）
		setPcdData(paramBean);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW10710);
		// 遷移先の画面名を共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW10710);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * 一覧に戻るボタン押下処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionMoveToIcrn() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// (1) 遷移先画面の設定
		// 遷移先画面ID
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		return true;
	}
	
	/**
	 * 引き継ぎ情報を取得し、取扱コードマスタ詳細サービスフォームBeanに設定する
	 * @param  svcFormBean  DataBeanアクセスクラス
	 * @throws Exception
	 */
	private void getSessionKKW10710SFBean(X31SDataBeanAccess svcFormBean) throws Exception
	{
		// 有無一覧も引き継いでいるが、編集は不要
		//セッションデータ取得
		JCCWebCommon.getScreenInfo(this);
		
		// 引継情報を取得
		X31SDataBeanAccessArray selectAgntHktgiList =  svcFormBean.getDataBeanArray(SELECT_AGNT_HKTGI_LIST);
		X31SDataBeanAccess selectAgntHktgiInf = selectAgntHktgiList.getDataBean(0);

		// 代理店コード
		String agnt_cd = selectAgntHktgiInf.sendMessageString(KKW10710SFConst.AGNT_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 世代登録年月日時分秒
		String gene_add_dtm = selectAgntHktgiInf.sendMessageString(KKW10710SFConst.GENE_ADD_DTM_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 引継情報をDataBeanに設定
		// ＫＥＹ＿代理店コード ← 代理店コード
		svcFormBean.sendMessageString(KKW10710SFConst.KEY_AGNT_CD, X31CWebConst.DATABEAN_SET_VALUE, agnt_cd);
		// ＫＥＹ＿世代登録年月日時分秒 ← 世代登録年月日時分秒
		svcFormBean.sendMessageString(KKW10710SFConst.KEY_GENE_ADD_DTM, X31CWebConst.DATABEAN_SET_VALUE, gene_add_dtm);
	}

	/**
	 * 取扱コードマスタ詳細初期表示サービス実行処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @exception Exceptionがスローされます。
	 */
	private void executeInitSvc(X31SDataBeanAccess[] paramBean) throws Exception
	{
		// 変数の定義
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		
		// 取扱コードマスタ詳細初期表示サービス
		paramMap = new HashMap<String, Object>();		//パラメタ設定用マップ
		inputMap = new HashMap<String, Object>();		//データマップ
		outputMap = new HashMap<String, Object>();		//結果格納用マップ
		
		// 取扱コードマスタ詳細初期表示サービスの呼び出しを行う。
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0649");
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0649_KKSV0649OPDBMapper mapper = new KKSV0649_KKSV0649OPDBMapper();
		
		// 代理店一意照会SC
		// ＫＥＹ＿予約適用年月日
		String unyo_ymd = paramBean[0].sendMessageString(KKW10710SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW10710SFConst.KEY_RSV_APLY_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
		mapper.setKKSV064901SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		// 取扱コードマスタ詳細初期表示サービス
		invokeService(paramMap, inputMap, outputMap);
		
		// 代理店一覧照会の下りマッピング
		mapper.getKKSV064901SC(paramBean, outputMap);
	}
	
	// 20130219 OT-2013-0000179 DEL START
	/**
	 * 取扱コードを変換します。
	 * <br>
	 * @param  paramBean  DataBean項目の配列
	 */
//	private void setAgntCdData(X31SDataBeanAccess[] paramBean)
//	{	
//		// 取扱コード
//		String agnt_cd = paramBean[0].sendMessageString(KKW10702SFConst.AGNT_CD, X31CWebConst.DATABEAN_GET_VALUE);
//		
//		if (!"".equals(agnt_cd) && agnt_cd.length() == 11) {
//			String agnt_cd1 = agnt_cd.substring(0, 10);
//			
//			// 取扱コードに再設定
//			paramBean[0].sendMessageString(KKW10710SFConst.AGNT_CD, X31CWebConst.DATABEAN_SET_VALUE, agnt_cd1);
//		}
//	}
	// 20130219 OT-2013-0000179 DEL END
	
	/**
	 * 年月日を変換します。
	 * <br>
	 * @param paramBean DataBean項目の配列
	 */
	private void setYmdData(X31SDataBeanAccess[] paramBean)
	{
		// 適用開始年月日
		String tstaymd = paramBean[0].sendMessageString(KKW10710SFConst.AGNT_TSTAYMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (!"".equals(tstaymd)) {
			// 適用開始年月日に再設定
			paramBean[0].sendMessageString(KKW10710SFConst.AGNT_TSTAYMD, X31CWebConst.DATABEAN_SET_VALUE, JKKAgntScreenUtil.getDispDate(tstaymd));
		}
		
		// 適用終了年月日
		String tendymd = paramBean[0].sendMessageString(KKW10710SFConst.AGNT_TENDYMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (!"".equals(tendymd)) {
			// 適用終了年月日に再設定
			paramBean[0].sendMessageString(KKW10710SFConst.AGNT_TENDYMD, X31CWebConst.DATABEAN_SET_VALUE, JKKAgntScreenUtil.getDispDate(tendymd));
		}
		
		// 予約適用年月日
		String rsvaplyymd = paramBean[0].sendMessageString(KKW10710SFConst.RSV_APLY_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (!"".equals(rsvaplyymd)) {
			// 予約適用年月日に再設定
			paramBean[0].sendMessageString(KKW10710SFConst.RSV_APLY_YMD, X31CWebConst.DATABEAN_SET_VALUE, JKKAgntScreenUtil.getDispDate(rsvaplyymd));
		}
	}
	
	/**
	 * 住所コードを変換します。
	 * <br>
	 * @param  paramBean  DataBean項目の配列
	 */
	private void setAdCdData(X31SDataBeanAccess[] paramBean)
	{	
		// 代理店住所コード
		String agntadcd = paramBean[0].sendMessageString(KKW10710SFConst.AGNT_AD_CD, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (!"".equals(agntadcd) && agntadcd.length() == 11) {
			String adcd1 = agntadcd.substring(0, 2);
			String adcd2 = agntadcd.substring(2, 5);
			String adcd3 = agntadcd.substring(5, 8);
			String adcd4 = agntadcd.substring(8, 11);
			
			if (!"".equals(adcd1) && adcd1.length() == 2 && !"".equals(adcd2) && adcd2.length() == 3
					&& !"".equals(adcd3) && adcd3.length() == 3 && !"".equals(adcd4) && adcd4.length() == 3) {
				String adcd = null;
				adcd = adcd1 + HYHUN + adcd2 + HYHUN + adcd3 + HYHUN + adcd4;
				
				// 代理店住所コードに再設定
				paramBean[0].sendMessageString(KKW10702SFConst.AGNT_AD_CD, X31CWebConst.DATABEAN_SET_VALUE, adcd);
			}
		}
	}
	
	/**
	 * 郵便番号を変換します。
	 * <br>
	 * @param  paramBean  DataBean項目の配列
	 */
	private void setPcdData(X31SDataBeanAccess[] paramBean)
	{	
		// 郵便番号
		String pcd = paramBean[0].sendMessageString(KKW10710SFConst.AGNT_PCD, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (!"".equals(pcd)) {
			// 郵便番号に再設定
			paramBean[0].sendMessageString(KKW10710SFConst.AGNT_PCD, X31CWebConst.DATABEAN_SET_VALUE, JKKAgntScreenUtil.editPcd(pcd));
		}
	}
}
