/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKEmgRrksNmUpdCC
*   ソースファイル名：JKKEmgRrksNmUpdCC.java
*   作成者          ：富士通
*   日付            ：2018年09月02日
*＜機能概要＞
*   お客様氏名・カナの変更時にサービス契約内訳<eo電話>の緊急通報用契約者名・カナ名を更新する
*   その後、緊急通報・変更のSOD発行を行う。
*＜修正履歴＞
*	バージョン		修正日			修正者			修正内容
*	v39.00.00		2018/09/02		FJ) 原田		【ANK-3458-00-00】契約者氏名変更時の副次処理を追加（緊急通報氏名の更新）
*	v39.00.01		2018/10/18		FJ) 澤田		【IT1-2018-0000169】緊急通報氏名の文字数対応
*	v39.00.02		2018/10/24		FJ) 澤田		【ANK-3458-00-00】サービス契約内訳＜電話＞の異動区分対応
*	v51.00.00		2020/09/18		FJ) 吉田		【OM-2020-0001133】緊急通報のお客様名カナ桁数が規定値を超えるためオーダーが滞留する
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKHakkoSODConstCC;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
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.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKCommonUtil;
import eo.common.util.JKKStringConverter;
import eo.common.util.JKKStringUtil;
import eo.common.util.JPCDateChecker;
import eo.common.util.JPCDateUtil;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B004CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0781A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0191C060CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0781A010CBSMsg1List;
	
/**
 * 緊急通報用契約者名・カナ名更新処理コモンコンポーネント部品です。
 * <br>
 * @author 富士通
 */

@SuppressWarnings("unchecked")
public class JKKEmgRrksNmUpdCC extends AbstractCommonComponent
{
	/** テンプレートID(サービス契約一覧照会（SYSID）2) */
	private static final String TEMPLATE_ID_EKK0081B004 = "EKK0081B004";
	
	/** テンプレートID(料金グループ一意照会) */
	private static final String TEMPLATE_ID_EKK0781A010 = "EKK0781A010";
	
	/** テンプレートID(お客様一意照会) */
	private static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";
	
	/** テンプレートID(サービス契約内訳<eo光電話>一覧照会（サービス契約番号）) */
	private static final String TEMPLATE_ID_EKK0191B001 = "EKK0191B001";
	
	/** テンプレートID(サービス契約内訳一意照会) */
	private static final String TEMPLATE_ID_EKK0161A010 = "EKK0161A010";
	
	/** テンプレートID(サービス契約内訳<eo光電話>一意照会) */
	private static final String TEMPLATE_ID_EKK0191A010 = "EKK0191A010";
	
	/** テンプレートID(サービス契約内訳<eo光電話>情報変更) */
	private static final String TEMPLATE_ID_EKK0191C060 = "EKK0191C060";
	
	/** 照査済 */
	private static final String SVC_KEI_STAT_SSZ = "020";
	
	/**
	 * メイン処理です。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// マッピング情報を取得
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		// 初期値設定
		String sysid = "";
		String idoDiv = "";
		String ck0011CustNm = "";
		String ck0011CustKana = "";
		try
		{
			// マッピング情報取得
			sysid =  JKKStringUtil.nullToBlank((String)ccMsg.get("sysid"));
			idoDiv =  JKKStringUtil.nullToBlank((String)ccMsg.get("ido_div"));
			// パラメータで取得しているが、更新する際はサービス契約内訳（カレント）の申込明細番号で更新しておるため不要
			String mskmDtlNoPram =  JKKStringUtil.nullToBlank((String)ccMsg.get("mskm_dtl_no"));

			// *****************************************
			// 緊急通報用契約者名・カナ名更新メイン処理
			// *****************************************
			
			// サービス契約一覧照会（SYSID）2呼び出し
			ArrayList<HashMap<String, Object>> ekk0081b004List = new ArrayList<HashMap<String, Object>>();
			ekk0081b004List = getEkk0081B004(handle, param, fixedText, sysid, JPCModelConstant.FUNC_CD_1);
			
			if (!JKKCommonUtil.isNull(ekk0081b004List) && ekk0081b004List.size() > 0)
			{
				// 処理対象のSYSIDに紐付くお客様名・お客様カナ名を取得
				// お客様一意照会呼び出し
				ArrayList<HashMap<String, Object>> eck0011a010List = new ArrayList<HashMap<String, Object>>();
				eck0011a010List = getEck0011a010(handle, param, fixedText, sysid, JPCModelConstant.FUNC_CD_2);
				
				if (!JKKCommonUtil.isNull(eck0011a010List) && eck0011a010List.size() > 0)
				{
					// お客様一意照会結果取得
					HashMap<String, Object> eck0011a010Map = new HashMap<String, Object>();
					
					eck0011a010Map = eck0011a010List.get(0);
					
					ck0011CustNm = JKKStringUtil.nullToBlank((String)eck0011a010Map.get("cust_nm"));
					ck0011CustKana = JKKStringUtil.nullToBlank((String)eck0011a010Map.get("cust_kana"));
					// IT1-2018-0000169 ADD START
					//お客様名が20文字以上の場合、緊急連絡先名は20文字以上は入力できないため、20文字以下にする。
					ck0011CustNm = editStrLength(ck0011CustNm, 20);
					//お客様名カナが36文字以上の場合、緊急連絡先名カナは36文字以上は入力できないため、36文字以下にする。
					// OM-2020-0001133 MOD START
//					ck0011CustKana = editStrLength(ck0011CustKana, 36);
					//濁点、半濁点を含む文字列は、全角⇒半角にした際桁数が増えるため、半角に変換してから文字数の計算をする
					// お客様名カナを半角に変換する
					String custKanaHalf = JKKStringConverter.convertHalf(ck0011CustKana);
					// 半角お客様名カナから、37文字目を取得する
					String custKanaHalfLastChar = getChar(custKanaHalf, 37);
					// 37文字目が濁点、半濁点の場合は36文字目と37文字目はセットなので、35文字以下にする。
					if(!"".equals(custKanaHalfLastChar) && ("ﾞ".equals(custKanaHalfLastChar) || "ﾟ".equals(custKanaHalfLastChar)))
					{
						custKanaHalf = editStrLength(custKanaHalf, 35);
					}
					// それ以外の場合は36文字以下にする
					else
					{
						custKanaHalf = editStrLength(custKanaHalf, 36);
					}
					// 編集した半角お客様名カナを全角に戻す
					ck0011CustKana = JKKStringConverter.convertFull(custKanaHalf);
					// OM-2020-0001133 MOD END
					// IT1-2018-0000169 ADD END
				}
			}
			
			// 取得したサービス契約番号の件数分、以降の処理を実行
			for (int i = 0; i < ekk0081b004List.size(); i++)
			{
				// サービス契約一覧照会（SYSID）2結果取得
				HashMap<String, Object> ekk0081b004Map = new HashMap<String, Object>();
				ekk0081b004Map = ekk0081b004List.get(i);
				
				String trgtTelSvcKeiNo = JKKStringUtil.nullToBlank((String)ekk0081b004Map.get("trgt_svc_kei_no"));

				// サービス契約内訳<eo光電話>一覧照会（サービス契約番号）呼び出し
				ArrayList<HashMap<String, Object>> ekk0191b001List = new ArrayList<HashMap<String, Object>>();
				ekk0191b001List = getEkk0191b001(handle, param, fixedText, trgtTelSvcKeiNo, JPCModelConstant.FUNC_CD_4);
				
				if (!JKKCommonUtil.isNull(ekk0191b001List) && ekk0191b001List.size() > 0)
				{
					for (int j = 0; j < ekk0191b001List.size(); j++)
					{
						// 取得した電話のサービス契約内訳番号の件数分処理する。
						// 初期値設定
						String trgtSvcKeiUcwkNo = "";
						String trgtSvcKeiUcwkStat = "";
						String trgtEmgKshNm = "";
						String trgtEmgKshKana = "";
						
						// 処理対象の情報を取得
						HashMap<String, Object> ekk0191b001Map = new HashMap<String, Object>();
						ekk0191b001Map = ekk0191b001List.get(j);
						
						trgtSvcKeiUcwkNo = JKKStringUtil.nullToBlank((String)ekk0191b001Map.get("svc_kei_ucwk_no"));
						trgtSvcKeiUcwkStat = JKKStringUtil.nullToBlank((String)ekk0191b001Map.get("svc_kei_ucwk_stat"));
						
						if (JKKStrConst.CD00037_STAT_STP.compareTo(trgtSvcKeiUcwkStat) >= 0
								|| JKKStrConst.CD00037_DSL_ZM.equals(trgtSvcKeiUcwkStat)
								|| JKKStrConst.CD00037_CANCEL_ZM.equals(trgtSvcKeiUcwkStat))
						{
							// サービス契約内訳<eo光電話>一意照会呼び出し
							ArrayList<HashMap<String, Object>> ekk0191a010List = new ArrayList<HashMap<String, Object>>();
							ekk0191a010List = getEkk0191a010(handle, param, fixedText, trgtSvcKeiUcwkNo, JPCModelConstant.FUNC_CD_4);
							
							if (!JKKCommonUtil.isNull(ekk0191a010List) && ekk0191a010List.size() > 0)
							{
								// サービス契約内訳<eo光電話>一意照会結果取得
								HashMap<String, Object> ekk0191a010Map = new HashMap<String, Object>();
								
								ekk0191a010Map = ekk0191a010List.get(0);
								
								trgtEmgKshNm = JKKStringUtil.nullToBlank((String)ekk0191a010Map.get("emg_ksh_nm"));
								trgtEmgKshKana = JKKStringUtil.nullToBlank((String)ekk0191a010Map.get("emg_ksh_kana"));
								
								// **********************************
								// 緊急通報用契約者名・カナ名更新判定
								// **********************************
								if (!ck0011CustNm.equals(trgtEmgKshNm) || !ck0011CustKana.equals(trgtEmgKshKana))
								{
									
									// サービス契約内訳一意照会呼び出し
									ArrayList<HashMap<String, Object>> ekk0161a010List = new ArrayList<HashMap<String, Object>>();
									ekk0161a010List = getEkk0161a010(handle, param, fixedText, trgtSvcKeiUcwkNo, JKKStringUtil.nullToBlank((String)ekk0191a010Map.get("gene_add_dtm")), JPCModelConstant.FUNC_CD_1);
									
									// サービス契約内訳<eo光電話>一意照会結果取得
									HashMap<String, Object> ekk0161a010Map = new HashMap<String, Object>();
									
									ekk0161a010Map = ekk0161a010List.get(0);
									
									//回復可能期間チェック
									if (JKKStrConst.CD00037_DSL_ZM.equals(trgtSvcKeiUcwkStat)
											|| JKKStrConst.CD00037_CANCEL_ZM.equals(trgtSvcKeiUcwkStat))
									{
										if (!dslYmdKaihkPsbPrdCheck(handle, param, fixedText, trgtSvcKeiUcwkStat, ekk0161a010Map))
										{
											continue;
										}
									}
									
									// **********************************
									// 緊急通報用契約者名・カナ名更新実行
									// **********************************
									// サービス契約内訳<eo光電話>情報変更呼び出し
									HashMap<String, Object> ekk0191c060Map = new HashMap<String, Object>();
									ekk0191c060Map = getEkk0191c060(handle, param, fixedText, ekk0161a010Map, ekk0191a010Map, ck0011CustNm, ck0011CustKana, idoDiv, JPCModelConstant.FUNC_CD_1);
									
									//解約・キャンセル済の場合はＳＯＤ発行ＣＣを呼び出さない
									if (!(JKKStrConst.CD00037_DSL_ZM.equals(trgtSvcKeiUcwkStat)
											|| JKKStrConst.CD00037_CANCEL_ZM.equals(trgtSvcKeiUcwkStat)))
									{
										// *********************
										// SOD発行CC呼び出し準備
										// *********************
										// 対象データマップ
										HashMap<String, Object> hakkoSodCcTrgtData = new HashMap<String, Object>();
										// 対象データリスト
										ArrayList<HashMap<String, Object>> trgtDataList = new ArrayList<HashMap<String, Object>>();
										hakkoSodCcTrgtData.put(JKKHakkoSODConstCC.TRGT_DATA_LIST, trgtDataList);
										hakkoSodCcTrgtData.put(JCMConstants.FUNC_CODE_KEY, JPCModelConstant.FUNC_CD_1);
										// SODマップ
										HashMap<String, Object> sodMap = new HashMap<String, Object>();
										// SOD基本情報
										HashMap<String, Object> sodKihonInfo = new HashMap<String, Object>();
										sodKihonInfo.put(JKKHakkoSODConstCC.INFO_SYSID, sysid);
										sodKihonInfo.put(JKKHakkoSODConstCC.INFO_IDO_DIV, JKKHakkoSODConstCC.IDO_DIV_HTELNOINFOCHGE);
										sodMap.put(JKKHakkoSODConstCC.SOD_KIHON_INFO, sodKihonInfo);
										// サービス契約情報
										HashMap<String, Object> svcKeiInfo = new HashMap<String, Object>();
										svcKeiInfo.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, trgtTelSvcKeiNo);
										sodMap.put(JKKHakkoSODConstCC.SVC_KEI_INFO, svcKeiInfo);
										// オプションサービス契約情報（空で設定）
										HashMap<String, Object> opSvcInfoMap = new HashMap<String, Object>();
										sodMap.put(JKKHakkoSODConstCC.OPSVKEI_INFO, opSvcInfoMap);
										// サービス契約内訳情報
										HashMap<String, Object> svcKeiUcwkInfo = new HashMap<String, Object>();
										svcKeiUcwkInfo.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, trgtSvcKeiUcwkNo);
										svcKeiUcwkInfo.put(JKKHakkoSODConstCC.INFO_CHBF_SVC_KEI_UCWK_GENE_ADD_DTM, JKKStringUtil.nullToBlank((String)ekk0191a010Map.get("gene_add_dtm")));
										svcKeiUcwkInfo.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, JKKStringUtil.nullToBlank((String)ekk0191c060Map.get("gene_add_dtm")));
										sodMap.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO, svcKeiUcwkInfo);
										
										trgtDataList.add(sodMap);
										param.setData("hakko_sod_cc_trgt_data", hakkoSodCcTrgtData);
									
										// **************************
										// サービスオーダ発行処理実行
										// **************************
										JKKHakkoSODCC hakkkoSodCc = new JKKHakkoSODCC();
										hakkkoSodCc.hakkoSOD(handle, param, "hakko_sod_cc_trgt_data");
									}
								}
							}
						}
					}
				}
			}
		}
		catch(Exception e)
		{
			JSYejbLog.printStackTrace(JSYejbLog.ERROR, this.getClass(), e, null, null);
		}
		return param;
	}
	
	// ----------------------------------------------------------------------------------------------------------------------
	// サービスインターフェイス実行処理部・開始
	// ----------------------------------------------------------------------------------------------------------------------
	/**
	 * サービス契約一覧照会（SYSID）2
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysid SYSID
	 * @param funcCd 機能コード
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, Object>> getEkk0081B004(SessionHandle handle
														, IRequestParameterReadWrite param
														, String fixedText
														, String sysid
														, String funcCd
														) throws Throwable
	{
		ArrayList<HashMap<String, Object>> ekk0081b004List = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> ekk0081b004Map = new HashMap<String, Object>();
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ------------------------------
		// サービス契約一覧照会（SYSID）2
		// ------------------------------
		// 上りマッピング
		Object[][] ekk0081b004In = {
							  {EKK0081B004CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B004}
							, {EKK0081B004CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1}
							, {EKK0081B004CBSMsg.KEY_SYSID, sysid}
							, {EKK0081B004CBSMsg.KEY_PRC_GRP_CD, JKKStrConst.CD00133_10}
							, {EKK0081B004CBSMsg.MAX_SEARCH_NUM, "1000"}
							, {EKK0081B004CBSMsg.DISPLAY_NUM, "100"}
							, {EKK0081B004CBSMsg.SEARCH_TYPE, "1"}
							, {EKK0081B004CBSMsg.DISPLAY_PAGE_NUM, "1"}
							};
		
		// サービスIF実行
		CAANMsg[] ekk0081b004Msg1List = callSC(handle, scCall, param, ekk0081b004In,
				fixedText, new EKK0081B004CBSMsg().getContents()).getCAANMsgList(EKK0081B004CBSMsg.EKK0081B004CBSMSG1LIST);
		
		if (null != ekk0081b004Msg1List)
		{
			for (CAANMsg ekk0081b004Msg : ekk0081b004Msg1List)
			{
				ekk0081b004Map = new HashMap<String, Object>();
				
				ekk0081b004Map.put("trgt_svc_kei_no", ekk0081b004Msg.getString(EKK0081B004CBSMsg1List.SVC_KEI_NO));
				ekk0081b004Map.put("trgt_svc_kei_stat", ekk0081b004Msg.getString(EKK0081B004CBSMsg1List.SVC_KEI_STAT));
				
				ekk0081b004List.add(ekk0081b004Map);
			}
		}
		
		return ekk0081b004List;
	}
	
	/**
	 * 料金グループ一意照会
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param prcGrpCd
	 * @param funcCd 機能コード
	 * @throws Throwable 
	 */
	private String getEkk0781A010(SessionHandle handle
														, IRequestParameterReadWrite param
														, String fixedText
														, String prcGrpCd
														, String trgtSvcKeiUcwkStat
														) throws Throwable
	{		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ------------------------------
		// サービス契約一覧照会（SYSID）2
		// ------------------------------
		// 上りマッピング
		Object[][] ekk0781A010In = {
							  {EKK0781A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0781A010}
							, {EKK0781A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2}
							, {EKK0781A010CBSMsg.KEY_PRC_GRP_CD, prcGrpCd}
							, {EKK0781A010CBSMsg.KEY_RSV_APLY_YMD, JPCBPCommon.getOpeDate(null)}
							};
		
		// サービスIF実行
		CAANMsg[] ekk0781A010Msg1List = callSC(handle, scCall, param, ekk0781A010In,
				fixedText, new EKK0781A010CBSMsg().getContents()).getCAANMsgList(EKK0781A010CBSMsg.EKK0781A010CBSMSG1LIST);
		
		if (null != ekk0781A010Msg1List)
		{
			CAANMsg ekk0781A010Msg = new CAANMsg();
			ekk0781A010Msg =  ekk0781A010Msg1List[0];
			//キャンセル済の場合
			if (JKKStrConst.CD00037_CANCEL_ZM.equals(trgtSvcKeiUcwkStat))
			{
				return ekk0781A010Msg.getString(EKK0781A010CBSMsg1List.CANCEL_CL_PSB_PRD);
			}
			else
			{
				return ekk0781A010Msg.getString(EKK0781A010CBSMsg1List.KAIHK_PSB_PRD);
			}
		}
		
		return "";
	}
	
	/**
	 * お客様一意照会
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysid SYSID
	 * @param funcCd 機能コード
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, Object>> getEck0011a010(SessionHandle handle
														, IRequestParameterReadWrite param
														, String fixedText
														, String sysid
														, String funcCd
														) throws Throwable
	{
		ArrayList<HashMap<String, Object>> eck0011a010List = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> eck0011a010Map = new HashMap<String, Object>();
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ---------------
		// お客様一意照会
		// ---------------
		// お客様一意照会の上りマッピング
		Object[][] eck0011a010In = {
							  {ECK0011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0011A010}
							, {ECK0011A010CBSMsg.FUNC_CODE, funcCd}
							, {ECK0011A010CBSMsg.KEY_SYSID, sysid}
							, {ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, JPCBPCommon.getOpeDate(null)}
							};
		
		// サービスIF実行
		CAANMsg[] eck0011a010Msg1List = callSC(handle, scCall, param, eck0011a010In,
				fixedText, new ECK0011A010CBSMsg().getContents()).getCAANMsgList(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST);
		
		if (null != eck0011a010Msg1List)
		{
			for (CAANMsg eck0011a010Msg : eck0011a010Msg1List)
			{
				eck0011a010Map = new HashMap<String, Object>();
				
				eck0011a010Map.put("cust_nm", eck0011a010Msg.getString(ECK0011A010CBSMsg1List.CUST_NM));
				eck0011a010Map.put("cust_kana", eck0011a010Msg.getString(ECK0011A010CBSMsg1List.CUST_KANA));
				
				eck0011a010List.add(eck0011a010Map);
			}
		}
		
		return eck0011a010List;
	}
	
	
	/**
	 * サービス契約内訳<eo光電話>一覧照会（サービス契約番号）
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @param funcCd 機能コード
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, Object>> getEkk0191b001(SessionHandle handle
														, IRequestParameterReadWrite param
														, String fixedText
														, String svcKeiNo
														, String funcCd
														) throws Throwable
	{
		ArrayList<HashMap<String, Object>> ekk0191b001List = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> ekk0191b001Map = new HashMap<String, Object>();
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ------------------------------------------------------
		// サービス契約内訳<eo光電話>一覧照会（サービス契約番号）
		// ------------------------------------------------------
		// 上りマッピング
		Object[][] ekk0191b001In = {
							  {EKK0191B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0191B001}
							, {EKK0191B001CBSMsg.FUNC_CODE, funcCd}
							, {EKK0191B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo}
							};
		
		// サービスIF実行
		CAANMsg[] ekk0191b001Msg1List = callSC(handle, scCall, param, ekk0191b001In,
				fixedText, new EKK0191B001CBSMsg().getContents()).getCAANMsgList(EKK0191B001CBSMsg.EKK0191B001CBSMSG1LIST);
		
		if (null != ekk0191b001Msg1List)
		{
			for (CAANMsg ekk0191b001Msg : ekk0191b001Msg1List)
			{
				ekk0191b001Map = new HashMap<String, Object>();
				
				ekk0191b001Map.put("svc_kei_ucwk_no", ekk0191b001Msg.getString(EKK0191B001CBSMsg1List.SVC_KEI_UCWK_NO));
				ekk0191b001Map.put("svc_kei_ucwk_stat", ekk0191b001Msg.getString(EKK0191B001CBSMsg1List.SVC_KEI_UCWK_STAT));
				
				ekk0191b001List.add(ekk0191b001Map);
			}
		}
		
		return ekk0191b001List;
	}
	
	/**
	 * サービス契約内訳一意照会
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @param funcCd 機能コード
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, Object>> getEkk0161a010(SessionHandle handle
														, IRequestParameterReadWrite param
														, String fixedText
														, String svcKeiUcwkNo
														, String geneAddDtm
														, String funcCd
														) throws Throwable
	{
		ArrayList<HashMap<String, Object>> ekk0161a010List = new ArrayList<HashMap<String, Object>>();
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ----------------------------------
		// サービス契約内訳一意照会
		// ----------------------------------
		// 上りマッピング
		Object[][] ekk0161a010In = {
							  {EKK0161A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161A010}
							, {EKK0161A010CBSMsg.FUNC_CODE, funcCd}
							, {EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo}
							, {EKK0161A010CBSMsg.KEY_GENE_ADD_DTM, geneAddDtm}
							};
		
		// サービスIF実行
		CAANMsg[] ekk0161a010Msg1List = callSC(handle, scCall, param, ekk0161a010In,
				fixedText, new EKK0161A010CBSMsg().getContents()).getCAANMsgList(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST);
		
		if (null != ekk0161a010Msg1List)
		{
			for (CAANMsg ekk0161a010Msg : ekk0161a010Msg1List)
			{
				ekk0161a010List.add(ekk0161a010Msg.getHashMap());
			}
		}
		
		return ekk0161a010List;
	}
	
	/**
	 * サービス契約内訳<eo光電話>一意照会
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @param funcCd 機能コード
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, Object>> getEkk0191a010(SessionHandle handle
														, IRequestParameterReadWrite param
														, String fixedText
														, String svcKeiUcwkNo
														, String funcCd
														) throws Throwable
	{
		ArrayList<HashMap<String, Object>> ekk0191a010List = new ArrayList<HashMap<String, Object>>();
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ----------------------------------
		// サービス契約内訳<eo光電話>一意照会
		// ----------------------------------
		// 上りマッピング
		Object[][] ekk0191a010In = {
							  {EKK0191A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0191A010}
							, {EKK0191A010CBSMsg.FUNC_CODE, funcCd}
							, {EKK0191A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo}
							};
		
		// サービスIF実行
		CAANMsg[] ekk0191a010Msg1List = callSC(handle, scCall, param, ekk0191a010In,
				fixedText, new EKK0191A010CBSMsg().getContents()).getCAANMsgList(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST);
		
		if (null != ekk0191a010Msg1List)
		{
			for (CAANMsg ekk0191a010Msg : ekk0191a010Msg1List)
			{
				ekk0191a010List.add(ekk0191a010Msg.getHashMap());
			}
		}
		
		return ekk0191a010List;
	}
	
	/**
	 * サービス契約内訳<eo光電話>情報変更
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param ekk0191a010Map サービス契約内訳<eo光電話>一意照会結果
	 * @param ck0011CustNm お客様氏名
	 * @param ck0011CustKana お客様カナ名
	 * @param funcCd 機能コード
	 * @throws Throwable 
	 */
	private HashMap<String, Object> getEkk0191c060(SessionHandle handle
														, IRequestParameterReadWrite param
														, String fixedText
														, HashMap ekk0161a010Map
														, HashMap ekk0191a010Map
														, String ck0011CustNm
														, String ck0011CustKana
														, String idoDiv
														, String funcCd
														) throws Throwable
	{
		HashMap<String, Object> ekk0191c060Map = new HashMap<String, Object>();
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// 初期値設定
		String svcKeiUcwkNo = "";
		String dobanitenJdgCd = "";
		String emgKshKsiteiFlg = "";
		String updDtmBf = "";
		
		// サービス契約内訳<eo光電話>一意照会結果情報取得
		svcKeiUcwkNo = JKKStringUtil.nullToBlank((String)ekk0191a010Map.get("svc_kei_ucwk_no"));
		dobanitenJdgCd = JKKStringUtil.nullToBlank((String)ekk0191a010Map.get("dobaniten_jdg_cd"));
		emgKshKsiteiFlg = JKKStringUtil.nullToBlank((String)ekk0191a010Map.get("emg_ksh_ksitei_flg"));
		updDtmBf = JKKStringUtil.nullToBlank((String)ekk0191a010Map.get("last_upd_dtm"));
		
		// ----------------------------------
		// サービス契約内訳<eo光電話>情報変更
		// ----------------------------------
		// 上りマッピング
		Object[][] ekk0191c060In = {
							  {EKK0191C060CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0191C060}
							, {EKK0191C060CBSMsg.FUNC_CODE, funcCd}
							, {EKK0191C060CBSMsg.MSKM_DTL_NO, (String)ekk0161a010Map.get("mskm_dtl_no")}
							, {EKK0191C060CBSMsg.SVC_KEI_UCWK_NO, svcKeiUcwkNo}
							, {EKK0191C060CBSMsg.SVC_UEST_KBTMZ_CD, (String)ekk0161a010Map.get("svc_uest_kbtmz_cd")}
							, {EKK0191C060CBSMsg.SVC_UEST_KBTM_CD, (String)ekk0161a010Map.get("svc_uest_kbtm_cd")}
							, {EKK0191C060CBSMsg.PNLTY_HASSEI_CD, (String)ekk0161a010Map.get("pnlty_hassei_cd")}
							// ANK-3458-00-00 MOD START
							//, {EKK0191C060CBSMsg.IDO_DIV, idoDiv}
							, {EKK0191C060CBSMsg.IDO_DIV, (String)ekk0161a010Map.get("ido_div")}
							// ANK-3458-00-00 MOD END
							, {EKK0191C060CBSMsg.TELNO, (String)ekk0191a010Map.get("telno")}
							, {EKK0191C060CBSMsg.TELNO_USE_PLACE_NO, (String)ekk0191a010Map.get("telno_use_place_no")}
							, {EKK0191C060CBSMsg.EMG_AD_CD, (String)ekk0191a010Map.get("emg_ad_cd")}
							, {EKK0191C060CBSMsg.EMG_HOSEI_PCD, (String)ekk0191a010Map.get("emg_hosei_pcd")}
							, {EKK0191C060CBSMsg.EMG_BNCHIGO, (String)ekk0191a010Map.get("emg_bnchigo")}
							, {EKK0191C060CBSMsg.EMG_ADRTTM, (String)ekk0191a010Map.get("emg_adrttm")}
							, {EKK0191C060CBSMsg.EMG_ADRRM, (String)ekk0191a010Map.get("emg_adrrm")}
							, {EKK0191C060CBSMsg.EMG_KSH_NM, ck0011CustNm}
							, {EKK0191C060CBSMsg.EMG_KSH_KANA, ck0011CustKana}
							, {EKK0191C060CBSMsg.FIRST_CDR_HASSEI_YMD, (String)ekk0191a010Map.get("first_cdr_hassei_ymd")}
							, {EKK0191C060CBSMsg.TELNO_JUN, (String)ekk0191a010Map.get("telno_jun")}
							, {EKK0191C060CBSMsg.NTT_NO_GUIDE_UM, (String)ekk0191a010Map.get("ntt_no_guide_um")}
							, {EKK0191C060CBSMsg.HELLOPAGE_KEISAI_UM, (String)ekk0191a010Map.get("hellopage_keisai_um")}
							, {EKK0191C060CBSMsg.TUWA_DTL_KOKAI_YH, (String)ekk0191a010Map.get("tuwa_dtl_kokai_yh")}
							, {EKK0191C060CBSMsg.TEL_NO_PRE_TCHI_CD, (String)ekk0191a010Map.get("tel_no_pre_tchi_cd")}
							, {EKK0191C060CBSMsg.TSJGS_CD, (String)ekk0191a010Map.get("tsjgs_cd")}
							, {EKK0191C060CBSMsg.MAN_SWITCH_RSV_DTM, (String)ekk0191a010Map.get("man_switch_rsv_dtm")}
							, {EKK0191C060CBSMsg.TOWNPAGE_KEISAI_KANA, (String)ekk0191a010Map.get("townpage_keisai_kana")}
							, {EKK0191C060CBSMsg.TOWNPAGE_KEISAI_NM, (String)ekk0191a010Map.get("townpage_keisai_nm")}
							, {EKK0191C060CBSMsg.VA_TAKNKIKI_MODEL_CD, (String)ekk0191a010Map.get("va_taknkiki_model_cd")}
							, {EKK0191C060CBSMsg.VA_KIKI_SEIZO_NO, (String)ekk0191a010Map.get("va_kiki_seizo_no")}
							, {EKK0191C060CBSMsg.VA_PORT_NO, (String)ekk0191a010Map.get("va_port_no")}
							, {EKK0191C060CBSMsg.UPD_DTM_BF, updDtmBf}
							, {EKK0191C060CBSMsg.RULE0059_AUTO_APLY, JKKStrConst.CD00001_0}
							, {EKK0191C060CBSMsg.DOBANITEN_MSKM_UM, (String)ekk0191a010Map.get("dobaniten_mskm_um")}
							, {EKK0191C060CBSMsg.DOBANITEN_REQ_CTRL_CD, (String)ekk0191a010Map.get("dobaniten_req_ctrl_cd")}
							, {EKK0191C060CBSMsg.DOBANITEN_JDG_CD, dobanitenJdgCd}
							, {EKK0191C060CBSMsg.EMG_AD_CHK_LV, (String)ekk0191a010Map.get("emg_ad_chk_lv")}
							, {EKK0191C060CBSMsg.EMG_KSH_KSITEI_FLG, emgKshKsiteiFlg}
							, {EKK0191C060CBSMsg.EMG_STATE_NM, (String)ekk0191a010Map.get("emg_state_nm")}
							, {EKK0191C060CBSMsg.EMG_CITY_NM, (String)ekk0191a010Map.get("emg_city_nm")}
							, {EKK0191C060CBSMsg.EMG_OAZTSU_NM, (String)ekk0191a010Map.get("emg_oaztsu_nm")}
							, {EKK0191C060CBSMsg.EMG_AZCHO_NM, (String)ekk0191a010Map.get("emg_azcho_nm")}
							, {EKK0191C060CBSMsg.VA_KIKI_CHG_NO, (String)ekk0191a010Map.get("va_kiki_chg_no")}
							};
		
		// サービスIF実行
		CAANMsg ekk0191c060Msg = callSC(handle, scCall, param, ekk0191c060In,
				fixedText, new EKK0191C060CBSMsg().getContents());
		
		if (null != ekk0191c060Msg)
		{
			ekk0191c060Map.put("gene_add_dtm", ekk0191c060Msg.getString(EKK0191C060CBSMsg.KK0161_GENE_ADD_DTM));
			ekk0191c060Map.put("upd_dtm", ekk0191c060Msg.getString(EKK0191C060CBSMsg.UPD_DTM));
		}
		
		return ekk0191c060Map;
	}
	
	// ----------------------------------------------------------------------------------------------------------------------
	// サービスインターフェイス実行処理部・終了
	// ----------------------------------------------------------------------------------------------------------------------
	
	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * @param handle セッションハンドル
	 * @param scCall SC呼び出し部品
	 * @param param リクエストパラメータ
	 * @param mappingData マッピングデータ
	 * @param fixedText ユーザ定義文字列
	 * @param contents CAANMsgのコンテンツ
	 * @return CAANMsg
	 * @throws Throwable 例外が発生した場合
	 */
	private CAANMsg callSC(SessionHandle handle, ServiceComponentRequestInvoker scCall, 
			IRequestParameterReadWrite param, Object[][] mappingData,
			String fixedText, Object[][] contents) throws Throwable
	{
		// 上りマッピング処理
		HashMap<String, Object> paramMap = editInMsg(param, mappingData);
		
		// サービスI/F呼出し実行
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// SCからの戻り値からCAANMsgを取得
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];
		
		// リターンコード取得
		Object returnCode = result.get(JCMConstants.RET_CD_INT_KEY);
		// ステータス取得
		int status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		
		// エラー情報の設定
		editErrorInfo(param, templates, (Integer)returnCode, fixedText, contents);
		
		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		// 異常の場合、CCExceptionを生成してスローする
		if(!("0".equals(returnCode.toString()) && 0 == status))
		{
			throw new CCException("サービスコンポーネントエラー", new Exception());
		}
		
		return msg;
	}
	
	/**
	 * 共通項目のメッセージを作成します。
	 * @param param リクエストパラメータ
	 * @param mappingData マッピングデータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException リクエストパラメータの操作でエラーが発生した場合
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param,
												Object[][] mappingData) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		// サービスインターフェイスID
		String svcIf = (String)mappingData[0][1];
		CAANMsg template = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));
		
		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));
		
		for (int i = 0; i < mappingData.length; i++)
		{
			if (mappingData[i][1] instanceof CAANMsg[])
			{
				template.set((String)mappingData[i][0], (CAANMsg[])mappingData[i][1]);
			}
			else
			{
				if ("".equals(mappingData[i][1]))
				{
					template.setNull((String)mappingData[i][0]);
				}
				else
				{
					template.set((String)mappingData[i][0], mappingData[i][1]);
				}
			}
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		
		templates[0] = template;
		
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		
		return paramMap;
	}
	
	/**
	 * エラー情報を設定します。
	 * @param param リクエストパラメータ
	 * @param templates CAANMsgクラス
	 * @param returnCode リターンコード
	 * @param fixedText ユーザ定義文字列
	 * @param contents CAANMsgのコンテンツ
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException リクエストパラメータの操作でエラーが発生した場合
	 */
	private IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode, String fixedText, Object[][] contents) throws RequestParameterException
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		
		if (bpStatus < templateStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		// ユーザデータ情報
		HashMap<String, String> inMap = (HashMap<String, String>)param.getData(fixedText);
		
		for (int i = 0; null != contents && i < contents.length ; i++)
		{
			String itemNm = (String)contents[i][0];
			if (itemNm.endsWith("_err"))
			{
				String errCd = (String)template.getString(itemNm);
				if (!JKKStringUtil.isNullBlank(errCd))
				{
					inMap.put(itemNm, errCd);
				}
			}
		}
		
		return param;
	}
	
	/**
	 * 回復可能期間チェック<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText
 	 * @param trgtSvcKeiUcwkStat
	 * @param ekk0081A010List
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	private boolean dslYmdKaihkPsbPrdCheck(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			String trgtSvcKeiUcwkStat,
			HashMap<String, Object> ekk0081A010map) throws Throwable
	{
		String dsl_ymd = "";
		//キャンセル済の場合
		if (JKKStrConst.CD00037_CANCEL_ZM.equals(trgtSvcKeiUcwkStat))	
		{
			//サービス契約キャンセル年月日を回復可能期間の起算日とする
			dsl_ymd = JKKStringUtil.nullToBlank((String) ekk0081A010map.get("svc_cancel_ymd"));
		}
		//解約済の場合
		else
		{
			//サービス契約終了年月日を回復可能期間の起算日とする
			dsl_ymd =  JKKStringUtil.nullToBlank((String) ekk0081A010map.get("svc_endymd"));
		}
		
		String prcGrpCd = JKKStrConst.CD00133_10;
		// 解約日と料金グループコードがNULLの場合
		if (JKKStringUtil.isNullBlank(dsl_ymd) || (JKKStringUtil.isNullBlank(prcGrpCd)))
		{
			return false;
		}
		//回復可能期間チェック
		String kaihk_psb_prd =  getEkk0781A010(handle, param, fixedText, prcGrpCd, trgtSvcKeiUcwkStat);
		if (JKKStringUtil.isNullBlank(kaihk_psb_prd))
		{
			return false;
		}
		String dsl_ymd_kaihk_psb_prd = JPCDateUtil.addDay(dsl_ymd, Integer.parseInt(kaihk_psb_prd));
		
		// 運用日が解約日＋回復可能期間を超過していた場合
		if (JPCDateChecker.isFutureDate(JPCBPCommon.getOpeDate(null), dsl_ymd_kaihk_psb_prd, "0"))
		{	
			return false;
		}
		return true;
	}
	
	/**
	 * サービス契約ステータスが照査済以降の場合は<code>true</code>を返却します。
	 * 
	 * @param svcKeiStat
	 *            サービス契約ステータス
	 * @return 照査の是非
	 */
	public static boolean isShosazumi(String svcKeiStat)
	{
		return SVC_KEI_STAT_SSZ.compareTo(svcKeiStat) <= 0;
	}
	
	// IT1-2018-0000169 ADD START
	/**
	 * 文字列が指定された文字数以上の場合、文字列を編集します。
	 * <br>
	 * @param editStr 編集前の文字列
	 * @param strLength 指定文字数
	 * @return 編集後の文字列
	 */
	public static String editStrLength(String editStr, int strLength)
	{
		String resultStr = "";
		if(!"".equals(editStr) && editStr.length() > strLength)
		{
			resultStr = editStr.substring(0, strLength);
		}
		else
		{
			resultStr = editStr;
		}
		return resultStr;
	}
	// IT1-2018-0000169 ADD END
	
	// OM-2020-0001133 ADD START
	/**
	 * 文字列が指定された桁数以上の場合、文字列から指定桁の文字を返却します。
	 * 文字列が空、あるいは指定桁数に満たない場合は空を返却します。
	 * <br>
	 * @param trgStr 対象の文字列
	 * @param trgStrLength 指定文字数
	 * @return 編集後の文字列
	 */
	private static String getChar(String trgStr, int trgStrLength)
	{
		String resultStr = "";
		if(!"".equals(trgStr) && trgStr.length() >= trgStrLength)
		{
			resultStr = trgStr.substring(trgStrLength-1, trgStrLength);
		}

		return resultStr;
	}
	// OM-2020-0001133 ADD END
}
