/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JEKKA0070001TPMA
*	ソースファイル名：JEKKA0070001TPMA.java
*	作成者			：FJ）岡
*	日付			：2018年6月12日
*＜機能概要＞
*	個別割引適用可否照会・変更依頼独自処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v38.00.00	2018/06/12	FJ）岡	【ANK-3436-00-00】eo光×eo電気×mineoセット割対応
*	v38.00.00	2018/07/24	FJ）岡	【IT1-2018-0000116】更新不可時間アクセスエラー対応
*	v38.01.00	2018/08/02	FJ）岡	【ANK-3436-24-00】eo光×eo電気×mineoセット割対応（仕様変更）
*	v57.00.00	2022/01/27	FJ) 南	【ANK-4195-00-00】eo光ネット×mineoセット割施策開始対応
*
********************************************************************************/
package eo.ejb.cbs.mainproc;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.jcc.util.JCCWestCalendar;
import com.fujitsu.futurity.model.ejb.common.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;

import eo.common.util.JKKCommonUtil;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.EKKA0070001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0070001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0070001CBSMsg2List;
import eo.ejb.cbs.cbsmsg.EKKA0070001CBSMsg3List;
import eo.ejb.cbs.cbsmsg.EKKA0070001CBSMsg4List;
import eo.ejb.cbs.cbsmsg.EKKA0070001CBSMsg5List;
import eo.ejb.common.JCCModelCommon;
import eo.ejb.common.edit.JKKejbDateUtil;
import gyomu.JKKcommonApiKKA0070001;


/**
 * 個別割引適用可否照会・変更依頼独自処理部品です。
 * <br>
 * @author FJ
 *
 */
public class JEKKA0070001TPMA implements TemplateMainHandler
{	
	// IT1-2018-0000116 2018/07/24 ADD START
	/** 更新不可時間アクセスエラー **/
	private static final int NO_UPDATABLE_TIME_ERR = 5000;
	// IT1-2018-0000116 2018/07/24 ADD START
	
	/**
	 * 個別割引適用可否照会・変更依頼を行います。
	 * 
	 * @param inCBSMsg 個別割引適用可否照会・変更依頼メッセージ
	 * @param inContext AgentDispatchContext
	 */
	public static void call_KKIFE401(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{

		Map<String, Object> serviceMap = new LinkedHashMap<String, Object>();
		
		// ANK-4195-00-00 ADD START
		// 申請経路
		serviceMap.put("route", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.ROUTE)));
		// ANK-4195-00-00 ADD END
		//リクエストID
		serviceMap.put("requestID", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.REQUESTID)));
		//運用日時
		// ANK-3436-24-00 2018/08/02 MOD START
		// serviceMap.put("ope_date_time", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.OPE_DATE_TIME)));
		serviceMap.put("ope_date_time", JCCModelCommon.getOpeDateTimeStamp(inCBSMsg, inContext, null));
		// ANK-3436-24-00 2018/08/02 MOD END
		//処理区分
		serviceMap.put("tran_div", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.TRAN_DIV)));
		//キャンペーンコード
		serviceMap.put("cmp_cd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.CMP_CD)));
		//サービス契約番号
		serviceMap.put("svc_kei_no", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SVC_KEI_NO)));
		//SYSID
		serviceMap.put("sysid", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SYSID)));
		//請求契約番号
		serviceMap.put("seiky_kei_no", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SEIKY_KEI_NO)));
		//契約者住所コード
		serviceMap.put("keisha_ad_cd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.KEISHA_AD_CD)));
		//サービスコード
		serviceMap.put("svc_cd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SVC_CD)));
		//料金グループコード
		serviceMap.put("prc_grp_cd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.PRC_GRP_CD)));
		//料金コースコード
		serviceMap.put("pcrs_cd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.PCRS_CD)));
		//料金プランコード
		serviceMap.put("pplan_cd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.PPLAN_CD)));
		//加入契約支払方式コード
		serviceMap.put("kanyu_kei_pay_hoshiki_cd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.KANYU_KEI_PAY_HOSHIKI_CD)));
		//申込年月日
		serviceMap.put("mskm_ymd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.MSKM_YMD)));
		//照査年月日
		serviceMap.put("shosa_ymd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SHOSA_YMD)));
		//照査解約完了コード
		serviceMap.put("shosa_dsl_fin_cd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SHOSA_DSL_FIN_CD)));
		//申込書番号
		serviceMap.put("mskmsho_no", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.MSKMSHO_NO)));
		//サービス契約ステータス
		serviceMap.put("svc_kei_stat", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SVC_KEI_STAT)));
		//回線場所住所コード
		serviceMap.put("kaisen_place_ad_cd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.KAISEN_PLACE_AD_CD)));
		//サービス契約回線内訳番号
		serviceMap.put("svc_kei_kaisen_ucwk_no", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SVC_KEI_KAISEN_UCWK_NO)));
		//サービス開始年月日
		serviceMap.put("svc_sta_ymd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SVC_STA_YMD)));
		//サービス終了年月日
		serviceMap.put("svc_endymd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SVC_ENDYMD)));
		//サービス課金開始年月日
		serviceMap.put("svc_chrg_staymd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SVC_CHRG_STAYMD)));
		//サービス課金終了年月日
		serviceMap.put("svc_chrg_endymd", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SVC_CHRG_ENDYMD)));
		//サービスID
		serviceMap.put("serviceID", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.SERVICEID)));
		//コース区分
		serviceMap.put("cource_div", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.COURCE_DIV)));
		//mineo電話番号
		serviceMap.put("mineo_tel", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.MINEO_TEL)));
		//解除メール通知有無1
		serviceMap.put("kei_1_mail_send_flag", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.KEI_1_MAIL_SEND_FLAG)));
		//入力mineo受付番号・電話番号
		serviceMap.put("input_mineo_no", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.INPUT_MINEO_NO)));
		//入力受付番号
		serviceMap.put("input_uk_no", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.INPUT_UK_NO)));
		//解除メール通知有無2
		serviceMap.put("kei_2_mail_send_flag", JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0070001CBSMsg.KEI_2_MAIL_SEND_FLAG)));

		// コマンド発行部品のインスタンスを取得
		JKKcommonApiKKA0070001 instance = new JKKcommonApiKKA0070001();

		try
		{
			// 共通API連携
			Map<String, Object> resServiceMap = instance.callApiKKA0070001(serviceMap);
			
			if(resServiceMap == null)
			{
				resServiceMap = new HashMap<String, Object>();
			}
			// 共通API連携実行結果判定
			// 処理結果コード"000":正常終了の場合
			if (resServiceMap.get("resultCode").equals("000"))
			{
				// ステータス設定（0:正常終了）
				inCBSMsg.set(EKKA0070001CBSMsg.STATUS, StatusCodes.NORMAL_END);
			}
			// 処理結果コード"500":業務エラーの場合
			else if (resServiceMap.get("resultCode").equals("500"))
			{
				List<Object> errList = (List<Object>)resServiceMap.get("gyomuErrorList");
				int starusNo = 0;
				int noExpValFlag = 0;
				for (int i = 0; i < errList.size(); i++)
				{
					// エラーリスト
					Map<String, Object> map = (Map<String, Object>)errList.get(i);
					String errorCode = (String)map.get("errorCode");
					
					if(JKKStringUtil.isNullBlank(errorCode))
					{
						noExpValFlag = 1;
					}
					else
					{
						noExpValFlag = isExpectedValue(errorCode, noExpValFlag);
						int errorCodeNo = Integer.parseInt(errorCode);
						if(starusNo < errorCodeNo)
						{
							starusNo = errorCodeNo;
						}
					}
					
				}
				String errorCode = String.valueOf(starusNo);
				if(noExpValFlag == 0)
				{
					if ("1000".equals(errorCode))
					{
					// "1000":単項目チェックエラー
					inCBSMsg.set(EKKA0070001CBSMsg.STATUS, StatusCodes.SINGLEDATA_ERR);
					}
					// IT1-2018-0000116 2018/07/24 MOD START
					// else if ("2000".equals(errorCode) || "3000".equals(errorCode) || "3001".equals(errorCode)
					//		|| "3002".equals(errorCode) || "3003".equals(errorCode) || "3004".equals(errorCode)
					//		|| "3005".equals(errorCode) || "4000".equals(errorCode) || "5000".equals(errorCode))
					else if ("2000".equals(errorCode) || "3000".equals(errorCode) || "3001".equals(errorCode)
							|| "3002".equals(errorCode) || "3003".equals(errorCode) || "3004".equals(errorCode)
							|| "3005".equals(errorCode) || "4000".equals(errorCode))
					// IT1-2018-0000116 2018/07/24 MOD END
					{
					// "1100":関連チェックエラー
					inCBSMsg.set(EKKA0070001CBSMsg.STATUS, StatusCodes.RELATION_ERR);
					}
					// IT1-2018-0000116 2018/07/24 ADD START
					else if ("5000".equals(errorCode))
					{
						// "5000":更新不可時間中アクセスエラー
						inCBSMsg.set(EKKA0070001CBSMsg.STATUS, NO_UPDATABLE_TIME_ERR);
					}
					// IT1-2018-0000116 2018/07/24 ADD END
				}
				else
				{
					// ステータス設定（6000:外部IFでエラー発生１）
					inCBSMsg.set(EKKA0070001CBSMsg.STATUS, StatusCodes.EXTERNAL_IF_ERR1);
				}
				
			}
			// 処理結果コード"000""500"以外の場合
			else
			{
				// ステータス設定（6000:外部IFでエラー発生１）
				inCBSMsg.set(EKKA0070001CBSMsg.STATUS, StatusCodes.EXTERNAL_IF_ERR1);
			}
			
			
			// レスポンス電文を設定　※異常が発生している場合でも空で作成する
			editOutMsg(inCBSMsg, resServiceMap);
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}

	/**
	 * 共通APIのレスポンス電文を設定します。
	 * <br>
	 * @param inCBSMsg 個別割引適用可否照会・変更依頼メッセージ
	 * @param resServiceMap レスポンスサービスマップ
	 */
	private static void editOutMsg(CAANMsg inCBSMsg, Map<String, Object> resServiceMap)
	{
		List<CAANMsg> msg1List = new ArrayList<CAANMsg>();
		List<CAANMsg> msg2List = new ArrayList<CAANMsg>();
		List<CAANMsg> msg3List = new ArrayList<CAANMsg>();
		List<CAANMsg> msg4List = new ArrayList<CAANMsg>();
		List<CAANMsg> msg5List = new ArrayList<CAANMsg>();
		
		// 処理結果
		String resultCode = (String)resServiceMap.get("resultCode");
		// 処理結果詳細コード
		String resultDetailCode = (String)resServiceMap.get("resultDetailCode");
		// 業務エラーリスト
		List<Object> errList = (List<Object>)resServiceMap.get("gyomuErrorList");
		// 業務データ
		Map<String, Object> body = (Map<String, Object>)resServiceMap.get("body");
		// 契約1
		Map<String, Object> contract1 = (Map<String, Object>)body.get("contract1");
		if(contract1 == null)
		{
			contract1 = new HashMap<String, Object>();
		}
		// 契約2
		Map<String, Object> contract2 = (Map<String, Object>)body.get("contract2");
		if(contract2 == null)
		{
			contract2 = new HashMap<String, Object>();
		}
		
		CAANMsg msg1 = new CAANMsg(EKKA0070001CBSMsg1List.class.getName());
		msg1.set(EKKA0070001CBSMsg1List.RESULT_OUT, JKKStringUtil.nullToBlank((String)body.get("result")));
		// ANK-4195-00-00 ADD START
		msg1.set(EKKA0070001CBSMsg1List.ROUTE_OUT, JKKStringUtil.nullToBlank((String)body.get("route")));
		// ANK-4195-00-00 ADD END
		msg1.set(EKKA0070001CBSMsg1List.REQUESTID_OUT, JKKStringUtil.nullToBlank((String)body.get("requestID")));
		msg1.set(EKKA0070001CBSMsg1List.OPE_DATE_TIME_OUT, JKKStringUtil.nullToBlank((String)body.get("operateDateTime")));
		msg1.set(EKKA0070001CBSMsg1List.TRAN_DIV_OUT, JKKStringUtil.nullToBlank((String)body.get("processingType")));
		msg1.set(EKKA0070001CBSMsg1List.CMP_CD_OUT, JKKStringUtil.nullToBlank((String)body.get("campaignCode")));
		msg1List.add(msg1);
		
		CAANMsg msg2 = new CAANMsg(EKKA0070001CBSMsg2List.class.getName());
		msg2.set(EKKA0070001CBSMsg2List.SVC_KEI_NO_1, JKKStringUtil.nullToBlank((String)contract1.get("serviceNum")));
		msg2.set(EKKA0070001CBSMsg2List.SYSID_1, JKKStringUtil.nullToBlank((String)contract1.get("sysid")));
		msg2.set(EKKA0070001CBSMsg2List.SEIKY_KEI_NO_1, JKKStringUtil.nullToBlank((String)contract1.get("invoiceNum")));
		msg2.set(EKKA0070001CBSMsg2List.KEISHA_AD_CD_1, JKKStringUtil.nullToBlank((String)contract1.get("contractorAddressCode")));
		msg2.set(EKKA0070001CBSMsg2List.SVC_CD_1, JKKStringUtil.nullToBlank((String)contract1.get("service")));
		msg2.set(EKKA0070001CBSMsg2List.PRC_GRP_CD_1, JKKStringUtil.nullToBlank((String)contract1.get("feeGroup")));
		msg2.set(EKKA0070001CBSMsg2List.PCRS_CD_1, JKKStringUtil.nullToBlank((String)contract1.get("feeCource")));
		msg2.set(EKKA0070001CBSMsg2List.PPLAN_CD_1, JKKStringUtil.nullToBlank((String)contract1.get("feePlan")));
		msg2.set(EKKA0070001CBSMsg2List.KANYU_KEI_PAY_HOSHIKI_CD_1, JKKStringUtil.nullToBlank((String)contract1.get("contractForm")));
		msg2.set(EKKA0070001CBSMsg2List.MSKM_YMD_1, JKKStringUtil.nullToBlank((String)contract1.get("subscriptionDate")));
		msg2.set(EKKA0070001CBSMsg2List.SHOSA_YMD_1, JKKStringUtil.nullToBlank((String)contract1.get("inspectionDate")));
		msg2.set(EKKA0070001CBSMsg2List.SHOSA_DSL_FIN_CD_1, JKKStringUtil.nullToBlank((String)contract1.get("inspectionCancellationCode")));
		msg2.set(EKKA0070001CBSMsg2List.MSKMSHO_NO_1, JKKStringUtil.nullToBlank((String)contract1.get("acceptanceNum")));
		msg2.set(EKKA0070001CBSMsg2List.SVC_KEI_STAT_1, JKKStringUtil.nullToBlank((String)contract1.get("contractCondition")));
		msg2.set(EKKA0070001CBSMsg2List.KAISEN_PLACE_AD_CD_1, JKKStringUtil.nullToBlank((String)contract1.get("usingPlaceAddressCode")));
		msg2.set(EKKA0070001CBSMsg2List.SVC_KEI_KAISEN_UCWK_NO_1, JKKStringUtil.nullToBlank((String)contract1.get("lineNum")));
		msg2.set(EKKA0070001CBSMsg2List.SVC_STA_YMD_1, JKKStringUtil.nullToBlank((String)contract1.get("serviceStartDate")));
		msg2.set(EKKA0070001CBSMsg2List.SVC_ENDYMD_1, JKKStringUtil.nullToBlank((String)contract1.get("serviceEndDate")));
		msg2.set(EKKA0070001CBSMsg2List.SVC_CHRG_STAYMD_1, JKKStringUtil.nullToBlank((String)contract1.get("chargeStartNum")));
		msg2.set(EKKA0070001CBSMsg2List.SVC_CHRG_ENDYMD_1, JKKStringUtil.nullToBlank((String)contract1.get("chargeEndNum")));
		msg2.set(EKKA0070001CBSMsg2List.SERVICEID_1, JKKStringUtil.nullToBlank((String)contract1.get("serviceID")));
		msg2.set(EKKA0070001CBSMsg2List.COURCE_DIV_1, JKKStringUtil.nullToBlank((String)contract1.get("courceClassification")));
		msg2.set(EKKA0070001CBSMsg2List.MINEO_TEL_1, JKKStringUtil.nullToBlank((String)contract1.get("mineoTel")));
		msg2.set(EKKA0070001CBSMsg2List.KEI_1_MAIL_SEND_FLAG_1, JKKStringUtil.nullToBlank((String)contract1.get("mailSendFlag")));
		msg2List.add(msg2);
		
		CAANMsg msg3 = new CAANMsg(EKKA0070001CBSMsg3List.class.getName());
		msg3.set(EKKA0070001CBSMsg3List.INPUT_MINEO_NO_2, JKKStringUtil.nullToBlank((String)contract2.get("inputMineoNum")));
		msg3.set(EKKA0070001CBSMsg3List.INPUT_UK_NO_2, JKKStringUtil.nullToBlank((String)contract2.get("inputAcceptanceNum")));
		msg3.set(EKKA0070001CBSMsg3List.KEI_2_MAIL_SEND_FLAG_2, JKKStringUtil.nullToBlank((String)contract2.get("mailSendFlag")));
		msg3.set(EKKA0070001CBSMsg3List.SVC_KEI_NO_2, JKKStringUtil.nullToBlank((String)contract2.get("serviceNum")));
		msg3.set(EKKA0070001CBSMsg3List.SYSID_2, JKKStringUtil.nullToBlank((String)contract2.get("sysid")));
		msg3.set(EKKA0070001CBSMsg3List.SEIKY_KEI_NO_2, JKKStringUtil.nullToBlank((String)contract2.get("invoiceNum")));
		msg3.set(EKKA0070001CBSMsg3List.KEISHA_AD_CD_2, JKKStringUtil.nullToBlank((String)contract2.get("contractorAddressCode")));
		msg3.set(EKKA0070001CBSMsg3List.SVC_CD_2, JKKStringUtil.nullToBlank((String)contract2.get("service")));
		msg3.set(EKKA0070001CBSMsg3List.PRC_GRP_CD_2, JKKStringUtil.nullToBlank((String)contract2.get("feeGroup")));
		msg3.set(EKKA0070001CBSMsg3List.PCRS_CD_2, JKKStringUtil.nullToBlank((String)contract2.get("feeCource")));
		msg3.set(EKKA0070001CBSMsg3List.PPLAN_CD_2, JKKStringUtil.nullToBlank((String)contract2.get("feePlan")));
		msg3.set(EKKA0070001CBSMsg3List.KANYU_KEI_PAY_HOSHIKI_CD_2, JKKStringUtil.nullToBlank((String)contract2.get("contractForm")));
		msg3.set(EKKA0070001CBSMsg3List.MSKM_YMD_2, JKKStringUtil.nullToBlank((String)contract2.get("subscriptionDate")));
		msg3.set(EKKA0070001CBSMsg3List.SHOSA_YMD_2, JKKStringUtil.nullToBlank((String)contract2.get("inspectionDate")));
		msg3.set(EKKA0070001CBSMsg3List.SHOSA_DSL_FIN_CD_2, JKKStringUtil.nullToBlank((String)contract2.get("inspectionCancellationCode")));
		msg3.set(EKKA0070001CBSMsg3List.MSKMSHO_NO_2, JKKStringUtil.nullToBlank((String)contract2.get("acceptanceNum")));
		msg3.set(EKKA0070001CBSMsg3List.SVC_KEI_STAT_2, JKKStringUtil.nullToBlank((String)contract2.get("contractCondition")));
		msg3.set(EKKA0070001CBSMsg3List.KAISEN_PLACE_AD_CD_2, JKKStringUtil.nullToBlank((String)contract2.get("usingPlaceAddressCode")));
		msg3.set(EKKA0070001CBSMsg3List.SVC_KEI_KAISEN_UCWK_NO_2, JKKStringUtil.nullToBlank((String)contract2.get("lineNum")));
		msg3.set(EKKA0070001CBSMsg3List.SVC_STA_YMD_2, JKKStringUtil.nullToBlank((String)contract2.get("serviceStartDate")));
		msg3.set(EKKA0070001CBSMsg3List.SVC_ENDYMD_2, JKKStringUtil.nullToBlank((String)contract2.get("serviceEndDate")));
		msg3.set(EKKA0070001CBSMsg3List.SVC_CHRG_STAYMD_2, JKKStringUtil.nullToBlank((String)contract2.get("chargeStartNum")));
		msg3.set(EKKA0070001CBSMsg3List.SVC_CHRG_ENDYMD_2, JKKStringUtil.nullToBlank((String)contract2.get("chargeEndNum")));
		msg3.set(EKKA0070001CBSMsg3List.SERVICEID_2, JKKStringUtil.nullToBlank((String)contract2.get("serviceID")));
		msg3.set(EKKA0070001CBSMsg3List.COURCE_DIV_2, JKKStringUtil.nullToBlank((String)contract2.get("courceClassification")));
		msg3.set(EKKA0070001CBSMsg3List.MINEO_TEL_2, JKKStringUtil.nullToBlank((String)contract2.get("mineoTel")));
		msg3List.add(msg3);
		
		CAANMsg msg4 = new CAANMsg(EKKA0070001CBSMsg4List.class.getName());
		msg4.set(EKKA0070001CBSMsg4List.RSLT_CD, resultCode);
		msg4.set(EKKA0070001CBSMsg4List.RSLT_DTL_CD, resultDetailCode);
		msg4List.add(msg4);
		
		for (int i = 0; i < errList.size(); i++)
		{
			CAANMsg msg5 = new CAANMsg(EKKA0070001CBSMsg5List.class.getName());
			Map<String, Object> map = (Map<String, Object>)errList.get(i);
			if(map == null)
			{
				map = new HashMap<String, Object>();
			}
			String err_cd = JKKStringUtil.nullToBlank((String)map.get("errorCode"));
			String err_msg = JKKStringUtil.nullToBlank((String)map.get("errorMessage"));
			msg5.set(EKKA0070001CBSMsg5List.ERR_CD, err_cd);
			msg5.set(EKKA0070001CBSMsg5List.ERR_MSG, err_msg);
			msg5List.add(msg5);
		}
		
		// Listから配列に変換して設定
		inCBSMsg.set(EKKA0070001CBSMsg.EKKA0070001CBSMSG1LIST, msg1List.toArray(new CAANMsg[msg1List.size()]));
		inCBSMsg.set(EKKA0070001CBSMsg.EKKA0070001CBSMSG2LIST, msg2List.toArray(new CAANMsg[msg2List.size()]));
		inCBSMsg.set(EKKA0070001CBSMsg.EKKA0070001CBSMSG3LIST, msg3List.toArray(new CAANMsg[msg3List.size()]));
		inCBSMsg.set(EKKA0070001CBSMsg.EKKA0070001CBSMSG4LIST, msg4List.toArray(new CAANMsg[msg4List.size()]));
		inCBSMsg.set(EKKA0070001CBSMsg.EKKA0070001CBSMSG5LIST, msg5List.toArray(new CAANMsg[msg5List.size()]));
		
	}
	
	/**
	 * エラーコードが期待値であるかを判定します。
	 * <br>
	 * @param errorCode エラーコード
	 * @param noExpValFlag 期待値フラグ
	 */
	private static int isExpectedValue(String errorCode,int noExpValFlag){
	
		if(!("1000".equals(errorCode) || "2000".equals(errorCode) || "3000".equals(errorCode)
			|| "3001".equals(errorCode) || "3002".equals(errorCode) || "3003".equals(errorCode)
			|| "3004".equals(errorCode) || "3005".equals(errorCode) || "4000".equals(errorCode)
			|| "5000".equals(errorCode)))
		{
			noExpValFlag = 1;
		}
		return noExpValFlag;
	}

}
