/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：CKW00302SFLogic
*   ソースファイル名：CKW00302SFLogic.java
*   作成者          ：FJ）古田
*   日付            ：2011年11月04日
*＜機能概要＞
*   不良顧客一意照会画面のビューロジックです
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/11/04   FJ）古田    新規作成
*   v5.00.00    2013/06/12   FJ）鳩本    【IT1-2013-0001263】障害対応
*   v5.01.00    2013/06/21   FJ）鳩本    【LT-2013-0000031】障害対応
*
**********************************************************************/

package eo.web.webview.CKW00302SF;

import java.util.HashMap;


import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCKScreenConst;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.mapping.CKSV0014_CKSV0014OPDBMapper;

/**
 * CKW00302のビューロジック
 * <BR>
 * @author 富士通
 */
public class CKW00302SFLogic extends JCCWebBusinessLogic
{
	/* ++++++++++ v5.01.00 修正開始 ++++++++++ */
	/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
//	/** 対応履歴引継項目キー(EOID) */
//	private static final String key_Eoid = "ＫＥＹ＿ｅｏＩＤ";
	/** 対応履歴引継項目キー(サービス契約番号) */
	private static final String key_Svc_Kei_no = "ＫＥＹ＿サービス契約番号";
	/* ++++++++++ v5.00.00 追加完了 ++++++++++ */
	/* ++++++++++ v5.01.00 修正完了 ++++++++++ */
	/**
	 * サービスフォームBeanの初期化処理を行います。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		//セッションデータ取得
		HashMap<String, Object> parameterMap = JCCWebCommon.getScreenInfo(this);
		
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 引き継ぎを行う内容を項目名をキーとしてserviceBeanに転記する。
		serviceBean.sendMessageString(CKW00302SFConst.HURYO_CUST_NO, X31CWebConst.DATABEAN_SET_VALUE
															, (String)parameterMap.get(CKW00302SFConst.HURYO_CUST_NO));

		// ■サービス呼び出し準備
		HashMap<String, String> paramMap = new HashMap<String, String>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		X31SDataBeanAccess[] paramBean = { serviceBean };
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CKSV0014");

		CKSV0014_CKSV0014OPDBMapper mapper = new CKSV0014_CKSV0014OPDBMapper();
		mapper.setCKSV001401SC(paramBean, inputMap, "1");
		mapper.setCKSV001401CC(paramBean, inputMap, "2");

		// ■ サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		// エラー処理
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		// ■ サービス結果の転記
		mapper.getCKSV001401SC(paramBean, outputMap);
		mapper.getCKSV001401CC(paramBean, outputMap);
		
		// 取得データを画面出力用に編集します。
		setEditData(paramBean);

		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW00302);
		// 遷移先の画面名を共有フォームBeanの項目に設定する
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_NAME_CKW00302);

		return true;
	}
	
	/**
	 * 対応履歴ボタン押下処理。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean openTaiorrki() throws Exception
	{
		
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();

		// 引き継ぎの情報を格納するMAPを生成する。
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// 引き継ぎを行う内容を項目名をキーとしてdataMapに転記する。
		/* ++++++++++ v5.01.00 修正開始 ++++++++++ */
		/* ++++++++++ v5.01.00 修正完了 ++++++++++ */
//		dataMap.put(CKW00302SFConst.SYSID, serviceBean.sendMessageString(CKW00302SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));
//		dataMap.put(key_Eoid, serviceBean.sendMessageString(CKW00302SFConst.EOID, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(key_Svc_Kei_no, serviceBean.sendMessageString(CKW00302SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		/* ++++++++++ v5.00.00 修正完了 ++++++++++ */
		/* ++++++++++ v5.00.00 修正開始 ++++++++++ */
		
		// 次画面引き継ぎ情報を設定
		JCCWebCommon.setScreenInfo(this, JCRScreenConst.SCREEN_ID_CRW01501, dataMap);

		// 遷移先画面での戻り先情報を設定する。
		JCCWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW01501, JCKScreenConst.SCREEN_ID_CKW00302);

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW01501);
		
		return true;
	}
	
	/**
	 * 対応履歴画面からの戻り処理。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean openTaiorrkiBack() throws Exception
	{
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW00302);
		// 遷移先の画面名を共有フォームBeanの項目に設定する
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_NAME_CKW00302);
		return true;
	}
	
	/**
	 * 戻るボタン押下処理。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW00301);

		return true;
	}
	
	/**
	 * Nullの場合空白を返却します。
	 * <br>
	 * @param arg0 判定する引数
	 * @return 文字列
	 */
	private String getNullToBlank(String arg0)
	{
		if(arg0 == null)
		{
			return "";
		}

		return arg0;
	}
	
	/**
	 * Nullの場合0を返却します。
	 * <br>
	 * @param arg0 判定する引数
	 * @return 文字列
	 */
	private String getNullToZero(String arg0)
	{
		if(arg0 == null)
		{
			return "0";
		}

		return arg0;
	}
	
	/**
	 * 画面表示用に編集します。
	 * <br>
	 * @param bean 検索データ
	 */
	private void setEditData(X31SDataBeanAccess[] bean)
	{
		
		// 登録年月日時分秒
		String add_dtm = getNullToBlank(bean[0].sendMessageString(CKW00302SFConst.ADD_DTM, X31CWebConst.DATABEAN_GET_VALUE));
		if(add_dtm.length() > 8)
		{
			add_dtm = add_dtm.substring(0, 8);
		}
		
		bean[0].sendMessageString(CKW00302SFConst.ADD_DTM, X31CWebConst.DATABEAN_SET_VALUE, add_dtm);

		// 不良顧客郵便番号
		String huryo_cust_pcd = getNullToBlank(bean[0].sendMessageString(CKW00302SFConst.HURYO_CUST_PCD, X31CWebConst.DATABEAN_GET_VALUE));
		
		if(huryo_cust_pcd.length() == 7)
		{
			huryo_cust_pcd = huryo_cust_pcd.substring(0, 3) + "-" + huryo_cust_pcd.substring(3, 7);
		}
		
		bean[0].sendMessageString(CKW00302SFConst.HURYO_CUST_PCD, X31CWebConst.DATABEAN_SET_VALUE, huryo_cust_pcd);
		
		// 不良顧客住所コード
		String huryo_cust_ad_cd = bean[0].sendMessageString(CKW00302SFConst.HURYO_CUST_AD_CD, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(huryo_cust_ad_cd.length() == 11)
		{
			huryo_cust_ad_cd = huryo_cust_ad_cd.substring(0, 2) + "-" + huryo_cust_ad_cd.substring(2, 5)
									+ "-" + huryo_cust_ad_cd.substring(5, 8) + "-" + huryo_cust_ad_cd.substring(8, 11);
		}
		
		bean[0].sendMessageString(CKW00302SFConst.HURYO_CUST_AD_CD, X31CWebConst.DATABEAN_SET_VALUE, huryo_cust_ad_cd);
		
		// Nullの場合JSPでフォーマットエラーとなるため空白に変換します。
		// 加入者交換出力開始年月
		bean[0].sendMessageString(CKW00302SFConst.KNYSHA_KOKAN_OUTPUT_STA_YM, X31CWebConst.DATABEAN_SET_VALUE
								, getNullToBlank(bean[0].sendMessageString(CKW00302SFConst.KNYSHA_KOKAN_OUTPUT_STA_YM, X31CWebConst.DATABEAN_GET_VALUE)));
		
		// 不良顧客生年月日
		bean[0].sendMessageString(CKW00302SFConst.HURYO_CUST_BIRTHD, X31CWebConst.DATABEAN_SET_VALUE
								, getNullToBlank(bean[0].sendMessageString(CKW00302SFConst.HURYO_CUST_BIRTHD, X31CWebConst.DATABEAN_GET_VALUE)));
		
		// 滞納金額
		bean[0].sendMessageString(CKW00302SFConst.NONPAY_AMNT, X31CWebConst.DATABEAN_SET_VALUE
										, getNullToZero(bean[0].sendMessageString(CKW00302SFConst.NONPAY_AMNT, X31CWebConst.DATABEAN_GET_VALUE)));
		
	}
	
}
