/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKFamipaWribOperateCC
*   ソースファイル名：JKKFamipaWribOperateCC.java
*   作成者          ：FJ
*   日付            ：2014年04月01日
*＜機能概要＞
*   ファミリーパック割引操作部品CC
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*	v8.00.00	2014/04/01	FJ)藤原		新規作成(ANK-1988-00-00)
*	v8.00.01	2014/04/15	FJ)藤原		IT1-2014-0000106
*	v8.00.02	2014/05/14	FJ)福岡		OM-2014-0001834
*	v32.00.00	2017/05/30	FJ)清原		IT2-2017-0000013 セキュリティーパック、プレミアムパックが解約されない
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;

import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.EKK0451A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451C070CBSMsg;

/**
 * ファミリーパック割引操作部品CC
 * 
 * @author 富士通
 */
public class JKKFamipaWribOperateCC extends AbstractCommonComponent {
	
	/** サービスインタフェース呼び出しで使用するマッパー群 */
	private JKKFamipaWribOperateMapperCC mapper = null;
	
	/** ユーザデータ情報 */
	private HashMap<String, Object> inMap = null;

	/** ファミリーパック割引操作の作業領域 */
	private Map<String, Object> ccWorkMap = null;
	
	/** 機能コード */
	private final String FUNC_CD_1 = "1";
	private final String FUNC_CD_2 = "2";
	
	/**
	 * 
	 * 引数キー
	 * 
	 * ・機能コード
	 * ・処理区分
	 * ・サービス契約番号
	 * ・解約起算日
	 * ・解約理由コード
	 * ・キャンセル理由コード
	 * ・申込明細番号
	 * ・異動区分
	 * ・割引サービスコード
	 * 
	 */
	private final String KEY_FUNC_CD            = "func_cd";
	private final String KEY_ACTION_DIV         = "action_div";
	private final String KEY_SVC_KEI_NO         = "svc_kei_no";
	private final String KEY_SVC_DSL_KISAN_YMD  = "svc_dsl_ymd";
	private final String KEY_SVC_DLRE_CD        = "svc_dlre_cd";
	private final String KEY_CANCEL_CD          = "svc_cancel_cd";
	private final String KEY_MSKM_DTL_NO        = "mskm_dtl_no";
	private final String KEY_IDO_DIV            = "ido_div";
	//v32.00.00 Add Start
	private final String WRIB_SVC_CD            = "wrib_svc_cd";
	//v32.00.00 Add End
	
	/**
	 * 
	 * 作業領域キー
	 * 
	 * ・割引サービス契約番号MapList → 割引サービス契約番号Listを複数件設定
	 * ・割引サービス契約番号List → key：割引サービス契約番号、val：サービス契約番号
	 * ・サービス契約番号List     → key：割引サービス契約番号、val：EKK0451A010 Msg
	 * 
	 */
	//v32.00.00 Add Start
	private final String KEY_WRIB_SVC_KEI_NO_LIST_MAP  = "KEY_WRIB_SVC_KEI_NO_LIST_MAP";
	//v32.00.00 Add End
	private final String KEY_WRIB_SVC_KEI_NO_LIST  = "WRIB_SVC_KEI_NO_LIST";
	private final String KEY_WRIB_SVC_KEI_INF_LIST = "WRIB_SVC_KEI_INF_LIST";
	
	/** ファミリーパック */
	private final String FAMIPA_CD = "W00000006";
	
	/** 割引サービス契約ステータス */
	private final String WRIB_SVC_KEI_STAT_100 = "100";
	private final String WRIB_SVC_KEI_STAT_010 = "010";
	
// v8.00.02 ADD START
	
	/** 異動区分：住所変更 */
	private final String IDO_DIV_00019 = "00019";
// v8.00.02 ADD END
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>割引解約新規作成処理を実施する.<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param handle    セッションハンドル
	 * @param param     リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite execute(SessionHandle handle,
												IRequestParameterReadWrite param,
												String fixedText) throws Throwable {
		printlnEjbLog("execute start");
		
		// 基準となる日付の取得
		String opeDate = getOpeDateCc(param);
		
		// 初期処理
		initSetUp(handle, param, fixedText, opeDate);
		
		// 入力データチェック
		chkInMap(handle, param);
		
		// 機能コード「チェックのみ」の場合は、主処理は行わない
		if (this.FUNC_CD_2.equals(this.ccWorkMap.get(this.KEY_FUNC_CD)))
			return param;
		
		// メイン処理実行
		main(handle, param);

		printlnEjbLog("execute end");
		return param;
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>主処理<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  handle セッションハンドル
	 * @param  param  リクエストパラメータ
	 * @throws Throwable 
	 */
	private void main(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable {
		printlnEjbLog("main start");
		
		// ファミリーパック割引解約
		exeFamipaWribRsl();
		
		printlnEjbLog("main end");
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>ファミリーパック割引解約処理<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void exeFamipaWribRsl() throws Throwable {
		
		// 割引サービス対象契約情報を取得・設定
		boolean famipaFlg = callEkk0481B002Inf();
		
		if(famipaFlg){
			
//v32.00.00 Del Start
//			// 割引サービス契約情報を取得・設定
//			String wribStat = callEkk0451A010Inf();
//			
//			if(WRIB_SVC_KEI_STAT_100.equals(wribStat)){
//				// 割引サービス契約解約
//				rsl();
//			}else if(WRIB_SVC_KEI_STAT_010.equals(wribStat)){
//				// 割引サービス契約キャンセル
//				callEKK0451C070Upd();
//			}
//			
//			// 進捗登録
//			callEKK1091D010Upd();
//v32.00.00 Del End
//v32.00.00 Add Start
			// 割引サービス契約番号リストマップ
			ArrayList<HashMap<String, Object>> wriInfMap = 
				(ArrayList<HashMap<String, Object>>) this.ccWorkMap.get(this.KEY_WRIB_SVC_KEI_NO_LIST_MAP);
			
			// 割引サービス契約番号リストマップの件数分処理を行う。
			for(HashMap<String, Object> childWriInfMap : wriInfMap)
			{
				// 割引サービス契約番号リストマップの1件分、割引サービス契約マップリストにセットする
				this.ccWorkMap.remove(this.KEY_WRIB_SVC_KEI_NO_LIST);
				this.ccWorkMap.put(this.KEY_WRIB_SVC_KEI_NO_LIST, childWriInfMap);
				
				// 割引サービス契約情報を取得・設定
				String[] ret = callEkk0451A010Inf();
				// 割引サービス契約ステータス
				String wribStat = ret[0];
				// 割引サービスコード
				String wribSvcCd = ret[1];
				
				if(WRIB_SVC_KEI_STAT_100.equals(wribStat)){
					// 割引サービス契約解約
					rsl();
				}else if(WRIB_SVC_KEI_STAT_010.equals(wribStat)){
					// 割引サービス契約キャンセル
					callEKK0451C070Upd();
				}
				
				// 進捗登録
				callEKK1091D010Upd(wribSvcCd);
			}
//v32.00.00 Add End
		}
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>進捗登録<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * @param wribSvcCd 
	 * 
	 * @throws Throwable 
	 */
//v32.00.00 Mod Start
//	private void callEKK1091D010Upd() throws Throwable {
	private void callEKK1091D010Upd(String wribSvcCd) throws Throwable {
//v32.00.00 Mod End
		printlnEjbLog("callEKK1091D010Upd start");
		
// v8.00.02 ADD START
		
		// 住変時は,進捗登録しない.
		if (isIdo00019((String) this.ccWorkMap.get(this.KEY_IDO_DIV)))
			return;
// v8.00.02 ADD END
		
		// KK0481_割引サービス対象契約
		//v32.00.00 Mod Start
//		CAANMsg[] ekk1091D010 = this.mapper.callEKK1091D010(this.FUNC_CD_1, this.ccWorkMap);
		this.mapper.callEKK1091D010(this.FUNC_CD_1, this.ccWorkMap, wribSvcCd);
		//v32.00.00 Mod End
		
		printlnEjbLog("callEKK1091D010Upd end");
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>KK0451_割引サービス契約を検索<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
//v32.00.00 Mod Start
//	private String callEkk0451A010Inf() throws Throwable {
	private String[] callEkk0451A010Inf() throws Throwable {
//v32.00.00 Mod End
		printlnEjbLog("callEkk0451A010Inf start");
		
		final String comStat   = "wrib_svc_kei_stat";
		
		String wribStat = null;
		//v32.00.00 Add Start
		String wribSvcCd = null;
		//v32.00.00 Add End
		
		// サービス契約情報
		HashMap<String, HashMap<String, Object>> svcInf = 
			(HashMap<String, HashMap<String, Object>>) this.ccWorkMap.get(this.KEY_WRIB_SVC_KEI_NO_LIST);
		
		// 割引解約新規に必要な情報
		HashMap<String,Object> workMap = new HashMap<String, Object>();
		
		Iterator<String> ite = svcInf.keySet().iterator();
		while (ite.hasNext()) {
			String key = ite.next();
			
			CAANMsg[] ekk0451a010 = this.mapper.callEKK0451A010(this.FUNC_CD_2, key);
			
			// [100：サービス提供中]または[010：受付済]以外は対象外
			if (!this.WRIB_SVC_KEI_STAT_100.equals(ekk0451a010[0].getString(comStat)) &&
					!this.WRIB_SVC_KEI_STAT_010.equals(ekk0451a010[0].getString(comStat))) {
				ite.remove();
				continue;
			}
			//v32.00.00 Add Start
			//進捗登録用に割引サービスコードを取得
			wribSvcCd = ekk0451a010[0].getString(this.WRIB_SVC_CD);
			//v32.00.00 Add End
			
			wribStat = ekk0451a010[0].getString(comStat);
			
			// ↑以外は,必要な値を保持.
			workMap.put(key, ekk0451a010[0]);
		}
		
		this.ccWorkMap.put(this.KEY_WRIB_SVC_KEI_INF_LIST, workMap);
		
		printlnEjbLog("callEkk0451A010Inf end");
		
		//v32.00.00 Mod Start
//		return wribStat;
		return new String[] { wribStat, wribSvcCd };
		//v32.00.00 Mod End
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>KK0481_割引サービス対象契約を検索<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @throws Throwable 
	 */
	private Boolean callEkk0481B002Inf() throws Throwable {
		printlnEjbLog("callEkk0481B002Inf start");
		
		final String comWribSvcKeiNo = "wrib_svc_kei_no";
		final String comWribSvcCd    = "wrib_svc_cd";
		final String comWribSvcStat  = "wrib_svc_kei_stat";
		
		boolean famipaFlg = false;
		
		// KK0481_割引サービス対象契約
		CAANMsg[] ekk0481b002List = this.mapper.callEKK0481B002(this.FUNC_CD_1, (String) this.ccWorkMap.get(this.KEY_SVC_KEI_NO));
		
		// key：割引サービス契約番号
		// val：（key：割引サービス対象契約番号、value：EKK0481A010Msg）
		HashMap<String, Object> wriInf = new HashMap<String, Object>();
		//v32.00.00 Add Start
		ArrayList<HashMap<String, Object>> wriInfMap = new ArrayList<HashMap<String, Object>>();
		//v32.00.00 Add End
		
		for (CAANMsg ekk0481b002 : ekk0481b002List) {
			
			//v32.00.00 Add Start
			wriInf = new HashMap<String,Object>();
			//v32.00.00 Add End
			
			String wribSvcCd = ekk0481b002.getString(comWribSvcCd);
			
			String wKeiNo = ekk0481b002.getString(comWribSvcKeiNo);
			
			// ファミリーパック割引又はセキュリティパック又はプレミアムパックかつ
			//     割引サービス契約ステータスが「100(サービス提供中)または010(受付済)」の場合
			// mapに設定する。
			if(chkFamipaWri(wribSvcCd) && 
					(this.WRIB_SVC_KEI_STAT_100.equals(ekk0481b002.getString(comWribSvcStat)) || 
							this.WRIB_SVC_KEI_STAT_010.equals(ekk0481b002.getString(comWribSvcStat)))){
				
				wriInf.put(wKeiNo,ekk0481b002);
				//v32.00.00 Add Start
				wriInfMap.add(wriInf);
				//v32.00.00 Add End
				
				famipaFlg = true;
				
				//v32.00.00 Del Start
				//break;
				//v32.00.00 Del End
			}
		}
		//v32.00.00 Mod Start
//		this.ccWorkMap.put(this.KEY_WRIB_SVC_KEI_NO_LIST, wriInf);
		this.ccWorkMap.put(this.KEY_WRIB_SVC_KEI_NO_LIST_MAP, wriInfMap);
		//v32.00.00 Mod End
		
		printlnEjbLog("callEkk0481B002Inf end");
		
		return famipaFlg;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>CAANMsg(EKK0451A010)返却処理を実施<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * @throws Throwable 
	 * 
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg isRslTg(String wribKey) throws Throwable  {
		printlnEjbLog("isRslTg start");
		
		// サービス契約情報
		HashMap<String, CAANMsg> svcInf = (HashMap<String, CAANMsg>) this.ccWorkMap.get(this.KEY_WRIB_SVC_KEI_INF_LIST);
		
		Iterator<String> ite = svcInf.keySet().iterator();
		while (ite.hasNext()) {
			String key = ite.next();
			
			if (key.equals(wribKey))
				return svcInf.get(key);
		}
		printlnEjbLog("isRslTg end");
		return null;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>割引の解約処理を実施<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * @throws Throwable 
	 * 
	 */
	@SuppressWarnings("unchecked")
	private void rsl() throws Throwable  {
		printlnEjbLog("rsl start");
		
		// 割引サービス契約情報
		HashMap<String, CAANMsg> wribsvcInf = (HashMap<String, CAANMsg>) this.ccWorkMap.get(this.KEY_WRIB_SVC_KEI_INF_LIST);
		
		Iterator<String> ite = wribsvcInf.keySet().iterator();
		while (ite.hasNext()) {
			String key = ite.next();
			
			// 一意情報取得
			CAANMsg tgMsg = isRslTg(key);
			
			// 解約
			CAANMsg ekk0451C020Msg = this.mapper.callEKK0451C020(this.FUNC_CD_1,
																	this.ccWorkMap,
																	tgMsg);
			// 解約確定
			CAANMsg ekk0451C030Msg = this.mapper.callEKK0451C030(this.FUNC_CD_1,
																	this.ccWorkMap,
																	tgMsg,
																	ekk0451C020Msg);
			
			// 最終更新年月日付け替え
			setLstYmdToAll(wribsvcInf, ekk0451C030Msg.getString(EKK0451C030CBSMsg.UPD_DTM));
		}
		printlnEjbLog("rsl end");
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>割引のキャンセル処理を実施<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * @throws Throwable 
	 * 
	 */
	@SuppressWarnings("unchecked")
	private void callEKK0451C070Upd() throws Throwable {
		
		printlnEjbLog("callEKK0451C070Upd start");
		
		// 割引サービス契約情報
		HashMap<String, CAANMsg> wribsvcInf = (HashMap<String, CAANMsg>) this.ccWorkMap.get(this.KEY_WRIB_SVC_KEI_INF_LIST);
		
		Iterator<String> ite = wribsvcInf.keySet().iterator();
		while (ite.hasNext()) {
			String key = ite.next();
			
			// 一意情報取得
			CAANMsg tgMsg = isRslTg(key);
			
			// キャンセル
			CAANMsg ekk0451C070Msg = this.mapper.callEKK0451C070(this.FUNC_CD_1,
																	this.ccWorkMap,
																	tgMsg);
			
			// 最終更新年月日付け替え
			setLstYmdToAll(wribsvcInf, ekk0451C070Msg.getString(EKK0451C070CBSMsg.UPD_DTM));
			
		}
		
		printlnEjbLog("callEKK0451C070Upd end");
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>最終更新年月日を設定.<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  wribsvcInf
	 * @param  tgYmd
	 * @throws Throwable 
	 */
	private void setLstYmdToAll(HashMap<String, CAANMsg> wribsvcInf, String tgYmd) throws Throwable {
		Iterator<String> ite = wribsvcInf.keySet().iterator();
		while (ite.hasNext()) {
			String key = ite.next();
			CAANMsg tgMsg = isRslTg(key);
			tgMsg.set(EKK0451A010CBSMsg1List.LAST_UPD_DTM, tgYmd);
		}
	}
	
	/**
	 * <dl>
	 * <dt>処理概要：
	 * <dd>割引サービスコードがファミリーパック又はセキュリティパック又はプレミアムパックか否かを判定<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * @param  wribSvcCd
	 * @return true:ファミリーパック又はセキュリティパック又はプレミアムパック、false：ファミリーパック又はセキュリティパック又はプレミアムパック以外
	 */
	private boolean chkFamipaWri(String wribSvcCd) {
//v32.00.00 Mod Start
//		return this.FAMIPA_CD.equals(wribSvcCd) ? true : false;	
		return (FAMIPA_CD.equals(wribSvcCd)
				|| JKKStrConst.WRIB_SVC_CD_SECURITY_PACK.equals(wribSvcCd) 
				|| JKKStrConst.WRIB_SVC_SMARTLINK_PREMIUM.equals(wribSvcCd)) 
				? true : false;
//v32.00.00 Mod End
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>初期設定を実施<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  handle    セッションハンドル
	 * @param  param     リクエストパラメータ
	 * @param  fixedText サービスメッセージ
	 * @throws RequestParameterException 
	 */
	@SuppressWarnings({ "unchecked" })
	private void initSetUp(SessionHandle handle,
								IRequestParameterReadWrite param,
								String fixedText,
								String opeDate) throws RequestParameterException {
		printlnEjbLog("initSetUp start");
		
		// CC-SCマッピングクラスのインスタンス生成
		this.mapper = new JKKFamipaWribOperateMapperCC(handle, param, opeDate);
		
		// ユーザデータ情報
		this.inMap = (HashMap<String, Object>) param.getData(fixedText);
		printlnEjbLog("fixedText=" + fixedText);
		
		// ファミリーパック割引操作部品クラス用の作業領域
		this.ccWorkMap = new HashMap();
		
		printlnEjbLog("initSetUp end");
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>入力データをチェック.<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param handle セッションハンドル
	 * @param param  リクエストパラメータ
	 * @throws Throwable 
	 */
	private void chkInMap(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable {
		printlnEjbLog("chkInMap start");
		
		// 機能コード
		setterWorkParam(this.KEY_FUNC_CD);
		
		// 処理区分
		setterWorkParam(this.KEY_ACTION_DIV);
		
		// サービス契約番号
		setterWorkParam(this.KEY_SVC_KEI_NO);
		
		// 解約起算日
		setterWorkParam(this.KEY_SVC_DSL_KISAN_YMD);
		
		// 解約理由コード
		setterWorkParam(this.KEY_SVC_DLRE_CD);
		
		// キャンセル理由コード
		setterWorkParam(this.KEY_CANCEL_CD);
		
		// 申込明細番号
		setterWorkParam(this.KEY_MSKM_DTL_NO);
		
		// 異動区分
		setterWorkParam(this.KEY_IDO_DIV);
		
		printlnEjbLog("chkInMap end");
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>keyに紐づく引数を内部mapへ保持<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  key 
	 * @throws CCException 
	 */
	private void setterWorkParam(String key) throws CCException {
		
		String obj = (String) this.inMap.get(key);
		
		if (!JKKStringUtil.isNullBlank(obj)) {
			printlnEjbLog(key + "=" + obj);
			this.ccWorkMap.put(key, obj);
		} else {
			printlnEjbLog(key + "=NULL");
			throw new CCException(key + "=NULL", new Exception());
		}
	}
	
	/**
	 * 基準となる日付を取得
	 * 
	 * バッチから呼び出された場合、「バッチ運用日+1日」
	 * オンラインがら呼び出された場合、「オンライン運用日」
	 * 
	 * @param param 
	 * @throws Throwable 
	 */
	private String getOpeDateCc(IRequestParameterReadWrite param) throws Throwable {
		
		final String CALL_TYPE_BATCH = "4";
		final int TRAN_ID_JOB_ID_DIGIT_STA = 9;
		final int TRAN_ID_JOB_ID_DIGIT_END = 20;
		final List<String> tgJob = Arrays.asList(new String[] {"EO2270210J0"});
		
		String batchJobId = "";
		String trnId = (String) param.getControlMapData(SCControlMapKeys.REQ_VIEWID);
		String callType = param.getCallType();
		
		if (trnId != null && trnId.length() >= TRAN_ID_JOB_ID_DIGIT_END)
			batchJobId = trnId.substring(TRAN_ID_JOB_ID_DIGIT_STA, TRAN_ID_JOB_ID_DIGIT_END);
		

		if (CALL_TYPE_BATCH.equals(callType)) {
			if (tgJob.contains(batchJobId))
			{
/* v8.00.01 MOD START                    +++++++++++++++++++++++++++++++++++++++++++++++++++ */
//				return JPCDateUtil.addDay(JCCBPCommon.getBatOpeDate(null), 1);
				return JCCBPCommon.getBatOpeDate(null);
/* v8.00.01 MOD END                      +++++++++++++++++++++++++++++++++++++++++++++++++++ */
			}
		}
		return JCCBPCommon.getOpeDate(null);
	}
	
// v8.00.02 ADD START
	
	/** 
	 * 
	 * 異動区分が住所変更か否かを判定.
	 * 
	 * @param  idoDiv 
	 * @return true：住変、false：以外
	 */
	private boolean isIdo00019(String idoDiv) {
		
		boolean ret = false;
		
		// 住所変更の場合
		if (this.IDO_DIV_00019.equals(idoDiv))
			ret = true;
		
		return ret;
	}
	
// v8.00.02 ADD END
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>デバッグログを出力します<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param dumpObj 出力するオブジェクト
	 */
	@SuppressWarnings("static-access")
	private void printlnEjbLog(Object dumpObj) {
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), dumpObj, null, null, null);
	}
}
