/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0871_KKSV0871OPDBMapper
*	ソースファイル名：KKSV0871_KKSV0871OPDBMapper.java
*	作成者			：FJ
*	日付			：2017年09月25日
*＜機能概要＞
*	BP（解約レター登録画面初期表示処理）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v33.00.00	2012/09/25	FJ			新規作成
*	v33.00.01	2017/10/17	FJ)原田		【ANK-3251-01-00】解約レターのシステム化_仕様変更対応
*	v59.00.00	2022/04/18	FJ)北川		【ANK-3745-00-00】宛名印字ラベル、解約レター送付先住所の建物名部屋番号分割対応
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.util.JZMCommonUtil;
import eo.web.webview.KKW02001SF.KKW02001SFConst;
import eo.web.webview.KKW21801SF.KKW21801SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKWebCommon;

/**
 * DataBean-BPマッピングをする。
 * @author 91978
 */
public class KKSV0871_KKSV0871OPDBMapper
{
	
	/**
	 * コンストラクタ
	 */
	public KKSV0871_KKSV0871OPDBMapper()
	{
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：解約レター登録画面検索
	 * @param outputMap
 	 * @return	true:正常

	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV087101CC(X31SDataBeanAccess[] bean, HashMap outputMap) 
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", "1");

		String keySysid = bean[0].sendMessageString("検索用ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
		if(keySysid != null && !"".equals(keySysid))
		{	
			// ＳＹＳＩＤ
			parentMap.put("key_sysid", bean[0].sendMessageString("検索用ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
			
			// 最大検索件数
			parentMap.put("max_search_num", JCCWebCommon.getSearchConst("KKW21801_MAX_SHOW_CNT"));
		}

		outputMap.put("KKSV087101CC", parentMap);
						
		return outputMap;
	}
	
	/**
	 * 下りマッピング
	 * @param bean
	 * @param outputMap
	 * @return	true:正常
	 * @throws	Exception
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV087101CC(X31SDataBeanAccess[] bean, HashMap outputMap) throws Exception 
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV087101CC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV087101CC");
		}

		ArrayList childList = null;
		
		X31SDataBeanAccessArray listTchishoReSearchCC_tchisho_list_EKK0561B001CBSMsg1List = bean[0].getDataBeanArray("解約レター検索結果一覧");
		childList = null;
		if(listTchishoReSearchCC_tchisho_list_EKK0561B001CBSMsg1List != null && parentMap != null && parentMap.containsKey("dsl_letter_search_list"))
		{
			childList = (ArrayList)parentMap.get("dsl_letter_search_list");

			for(int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if(listTchishoReSearchCC_tchisho_list_EKK0561B001CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listTchishoReSearchCC_tchisho_list_EKK0561B001CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listTchishoReSearchCC_tchisho_list_EKK0561B001CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// 解約レター検索結果一覧.サービス契約番号
				if (childMap != null)
				{
					subbean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_no"));
				} 
				else
				{
					subbean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.サービス契約ステータス
				if (childMap != null) 
				{
					subbean.sendMessageString("サービス契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_stat"));
				} 
				else
				{
					subbean.sendMessageString("サービス契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.サービス契約ステータス名
				if (childMap != null)
				{
					subbean.sendMessageString("サービス契約ステータス名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_stat_nm"));
				} 
				else 
				{
					subbean.sendMessageString("サービス契約ステータス名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.異動区分
				if (childMap != null) 
				{
					subbean.sendMessageString("異動区分", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_div"));
				} 
				else 
				{
					subbean.sendMessageString("異動区分", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.異動区分名称
				if (childMap != null) 
				{
					subbean.sendMessageString("異動区分名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_div_nm"));
				} 
				else 
				{
					subbean.sendMessageString("異動区分名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.ＳＹＳＩＤ
				if (childMap != null)
				{
					subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sysid"));
				} 
				else
				{
					subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.料金グループコード
				if (childMap != null) 
				{
					subbean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_grp_cd"));
				} 
				else
				{
					subbean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.料金グル―プ名
				if (childMap != null) 
				{
					subbean.sendMessageString("料金グル―プ名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_grp_nm"));
				} 
				else 
				{
					subbean.sendMessageString("料金グル―プ名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.サービス開始年月日
				if (childMap != null) 
				{
					subbean.sendMessageString("サービス開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_sta_ymd"));
				} 
				else 
				{
					subbean.sendMessageString("サービス開始年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.サービス終了年月日
				if (childMap != null) 
				{
					subbean.sendMessageString("サービス終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_end_ymd"));
				} 
				else 
				{
					subbean.sendMessageString("サービス終了年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.サービス課金終了年月日
				if (childMap != null) 
				{
					subbean.sendMessageString("サービス課金終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_chrg_endymd"));
				} 
				else 
				{
					subbean.sendMessageString("サービス課金終了年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.サービス解約年月日
				if (childMap != null) 
				{
					subbean.sendMessageString("サービス解約年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_dsl_ymd"));
				} 
				else 
				{
					subbean.sendMessageString("サービス解約年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.サービス契約回線内訳番号
				if (childMap != null) 
				{
					subbean.sendMessageString("サービス契約回線内訳番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_kaisen_ucwk_no"));
				} 
				else 
				{
					subbean.sendMessageString("サービス契約回線内訳番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.利用場所郵便番号
				if (childMap != null) 
				{
					subbean.sendMessageString("利用場所郵便番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kaisen_place_pcd"));
				} 
				else 
				{
					subbean.sendMessageString("利用場所郵便番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.利用場所住所
				if (childMap != null) 
				{
					//ANK-3745-00-00 ADD START
					//建物名及び部屋番号が登録されている場合に限り部屋番号の前に全角スペース
					if (childMap.get("kaisen_place_adrrm") != null && !("".equals("kaisen_place_adrrm")))
					{
						childMap.put("kaisen_place_adrrm", "　" + childMap.get("kaisen_place_adrrm"));
					}
					//ANK-3745-00-00 ADD END
					subbean.sendMessageString("利用場所住所", X31CWebConst.DATABEAN_SET_VALUE, 
							JZMCommonUtil.nullToBlank((String)childMap.get("kaisen_place_state_nm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("kaisen_place_city_nm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("kaisen_place_oaztsu_nm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("kaisen_place_azcho_nm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("kaisen_place_bnchigo")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("kaisen_place_adrttm")) +
							JZMCommonUtil.nullToBlank((String)childMap.get("kaisen_place_adrrm")));
				} 
				else 
				{
					subbean.sendMessageString("利用場所住所", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.請求契約番号
				if (childMap != null) 
				{
					subbean.sendMessageString("請求契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_kei_no"));
				} 
				else 
				{
					subbean.sendMessageString("請求契約番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.請求先郵便番号
				if (childMap != null) 
				{
					subbean.sendMessageString("請求先郵便番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sohus_pcd"));
				} 
				else 
				{
					subbean.sendMessageString("請求先郵便番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.請求先住所
				if (childMap != null) 
				{
					//ANK-3745-00-00 ADD START
					//建物名及び部屋番号が登録されている場合に限り部屋番号の前に全角スペース挿入
					if (childMap.get("sohus_adrrm") != null && !("".equals("sohus_adrrm")))
					{
						childMap.put("sohus_adrrm", "　" + childMap.get("sohus_adrrm"));
					}
					//ANK-3745-00-00 ADD END
					subbean.sendMessageString("請求先住所", X31CWebConst.DATABEAN_SET_VALUE, 
							JZMCommonUtil.nullToBlank((String)childMap.get("sohus_state_nm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("sohus_city_nm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("sohus_oaztsu_nm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("sohus_azcho_nm")) + 
							// ANK-3251-01-00 MOD START
							//JZMCommonUtil.nullToBlank((String)childMap.get("sohus_adrttm")) + 
							//JZMCommonUtil.nullToBlank((String)childMap.get("sohus_adrrm")) + 
							//JZMCommonUtil.nullToBlank((String)childMap.get("sohus_bnchigo")));
							JZMCommonUtil.nullToBlank((String)childMap.get("sohus_bnchigo")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("sohus_adrttm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("sohus_adrrm")));
							// ANK-3251-01-00 MOD END
				} 
				else 
				{
					subbean.sendMessageString("請求先住所", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.レター送付先名
				if (childMap != null) 
				{
					subbean.sendMessageString("レター送付先名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_nm"));
				} 
				else 
				{
					subbean.sendMessageString("レター送付先名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.お客様名
				if (childMap != null) 
				{
					subbean.sendMessageString("お客様名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_nm"));
				} 
				else 
				{
					subbean.sendMessageString("お客様名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.契約者郵便番号
				if (childMap != null) 
				{
					subbean.sendMessageString("契約者郵便番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_pcd"));
				} 
				else 
				{
					subbean.sendMessageString("契約者郵便番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.契約者住所
				if (childMap != null) 
				{
					//ANK-3745-00-00 ADD START
					//建物名及び部屋番号が登録されている場合に限り部屋番号の前に全角スペース挿入
					if (childMap.get("keisha_adrrm") != null && !("".equals("keisha_adrrm")))
					{
						childMap.put("keisha_adrrm", "　" + childMap.get("keisha_adrrm"));
					}
					//ANK-3745-00-00 ADD END
					subbean.sendMessageString("契約者住所", X31CWebConst.DATABEAN_SET_VALUE,  
							JZMCommonUtil.nullToBlank((String)childMap.get("keisha_state_nm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("keisha_city_nm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("keisha_oaztsu_nm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("keisha_azcho_nm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("keisha_bnchigo")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("keisha_adrttm")) + 
							JZMCommonUtil.nullToBlank((String)childMap.get("keisha_adrrm")));
				} 
				else 
				{
					subbean.sendMessageString("契約者住所", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 解約レター検索結果一覧.解約フラグ
				if (childMap != null) 
				{
					subbean.sendMessageString("解約フラグ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dsl_flg"));
				} 
				else 
				{
					subbean.sendMessageString("解約フラグ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}

				
			}
		}
		
		HashMap<String, Object> parentMapCd = new HashMap<String, Object>(); // 
		HashMap<String, Object> parent_1723_Map = new HashMap<String, Object>(); // 
		HashMap<String, Object> parent_1725_Map = new HashMap<String, Object>(); // 
		List<Map<String, Object>> cd01723List = null;
		List<Map<String, Object>> cd01725List = null;
		List<Map<String, Object>> cd01726List = null;
		List<Map<String, Object>> cd01727List = null;
		if(outputMap.containsKey("KKSV087101CC"))
		{
			// ■コード名称管理一覧照会(EZM0171B010) CD01723（解約レターコメント備考コード）用
			cd01723List = (List<Map<String, Object>>)parentMap.get("ezm0171b010Cd0173");
			// ■コード名称管理一覧照会(EZM0171B010) CD01725（解約レター送付用住所情報識別コード）用
			cd01725List = (List<Map<String, Object>>)parentMap.get("ezm0171b010Cd0175");
			// ■コード名称管理一覧照会(EZM0171B010) CD01726（解約レター登録画面注釈表示コード）用
			cd01726List = (List<Map<String, Object>>)parentMap.get("ezm0171b010Cd0176");
			// ■コード名称管理一覧照会(EZM0171B010) CD01727（解約精算金項目コード）用
			cd01727List = (List<Map<String, Object>>)parentMap.get("ezm0171b010Cd0177");
			parent_1723_Map.put("EZM0171B010CBSMsg1List", cd01723List);
			parent_1725_Map.put("EZM0171B010CBSMsg1List", cd01725List);
			parentMapCd.put("resultCd01723", parent_1723_Map);
			parentMapCd.put("resultCd01725", parent_1725_Map);
		}

		// プルダウン取得共通部品実行
		JKKWebCommon.setPulldownList(bean[0], parentMapCd, KKW21801SFConst.DSL_LETTER_COMMENT_BIKO_CD_LIST, "resultCd01723", true);
		JKKWebCommon.setPulldownList(bean[0], parentMapCd, KKW21801SFConst.DSL_LETTER_SOHUS_STATE_CHOICE_LIST, "resultCd01725", true);
		// ▲自動生成利用しない end
	
		String strSum = "";
		
		for(int i = 0; i < cd01726List.size(); i++)
		{
			Map<String, Object> cdNmKanri = new HashMap<String, Object>();
			cdNmKanri = cd01726List.get(i);
			cdNmKanri.get("cd_div_nm");
			strSum = strSum + cdNmKanri.get("cd_div_nm") + "\r\n";
		}
		
		//解約清算金項目リストを共通ビーンにセットする。
		X31SDataBeanAccessArray dslSeisanPrcKmkList = bean[0].getDataBeanArray("解約清算金項目リスト");

		if(cd01727List != null && parentMap != null)
		{

			for(int i = 0; i < cd01727List.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if(dslSeisanPrcKmkList.getCount() - 1 >= i)
				{
					subbean = dslSeisanPrcKmkList.getDataBean(i);
				}
				else
				{
					subbean = dslSeisanPrcKmkList.addDataBean();
				}
				HashMap childMap = (HashMap)cd01727List.get(i);
				if (subbean == null)
				{
					continue;
				}

				// 解約清算金項目リスト
				if (childMap != null) 
				{
					subbean.sendMessageString("解約清算金項目コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div"));
					subbean.sendMessageString("解約清算金項目名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div_nm"));
				} 
				else 
				{
					subbean.sendMessageString("解約清算金項目コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("解約清算金項目名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}		
		
		//精算金注釈＿表示用を編集する。
		for(int i = 0; i < cd01727List.size(); i++)
		{
			Map<String, Object> cdNmKanri = new HashMap<String, Object>();
			cdNmKanri = cd01727List.get(i);
			strSum = strSum.replace("%" + (i + 1) + "%", (String)cdNmKanri.get("cd_div_nm"));
		}
		bean[0].sendMessageString("精算金注釈＿表示用", X31CWebConst.DATABEAN_SET_VALUE, strSum);

		return bean;
	}

}