/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：TUSV0104_TUSV0104OPDBMapper
*	ソースファイル名：TUSV0104_TUSV0104OPDBMapper.java
*	作成者			：FJ
*	日付			：2024年02月28日
*＜機能概要＞
*	BP（他社読込済申請結果確認一覧）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v72.00.00	2024/02/28	FJ)謝		【ANK-4494-00-00】【eo定期】 双方向番ポ対応
*	v75.00.00	2025/05/23	FJ)金		【ANK-4685-00-00】【eo】双方向番ポSTEP3
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JTUStrConst;
import eo.common.util.JTUStringUtil;
import eo.web.webview.common.JCCWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class TUSV0104_TUSV0104OPDBMapper 
{
	/**
	 * コンストラクタ
	 */
	public TUSV0104_TUSV0104OPDBMapper()
	{
	}
	
	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：他社読込済申請結果確認一覧
	 * @param outputMap
	 * @param tranDiv　処理区分
	 */
	@SuppressWarnings("unchecked")
	public HashMap setTUSV010401CC(X31SDataBeanAccess[] bean, HashMap outputMap, String tranDiv)
	{
		if (bean == null)
		{
			return null;
		}
		
		if (bean.length != 1)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);
		parentMap.put("search_type", JPCModelConstant.SAERCH_TYPE_IKT);
		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("TUW03601_MAX_SHOW_CNT"));
		parentMap.put("display_num", JCCWebCommon.getSearchConst("TUW03601_ROW_PER_PAGE"));
		
		// 処理区分
		parentMap.put("tran_div", tranDiv);
		//ANK-4685-00-00 MOD START
//		// ＫＥＹ＿取込日
//		parentMap.put("key_trkm_day", bean[0].sendMessageString("取込日", X31CWebConst.DATABEAN_GET_VALUE));
		// ＫＥＹ＿取込日（ＦＲＯＭ）
		parentMap.put("key_trkm_day_sta", bean[0].sendMessageString("取込日（ＦＲＯＭ）", X31CWebConst.DATABEAN_GET_VALUE));
		// ＫＥＹ＿取込日（ＴＯ）
		parentMap.put("key_trkm_day_end", bean[0].sendMessageString("取込日（ＴＯ）", X31CWebConst.DATABEAN_GET_VALUE));
		//ＫＥＹ＿電話番号
		parentMap.put("key_telno", bean[0].sendMessageString("検索条件＿電話番号", X31CWebConst.DATABEAN_GET_VALUE));
		//ＫＥＹ＿受付担当名
		parentMap.put("key_uk_tnt_nm", bean[0].sendMessageString("検索条件＿受付担当名", X31CWebConst.DATABEAN_GET_VALUE));
		//ANK-4685-00-00 MOD END
		// ＫＥＹ＿申込区分＿新規申請
		parentMap.put("key_mkm_div_new_shin", setSearchValueForCheckBox(bean[0], "申込区分＿新規申請"));
		// ＫＥＹ＿申込区分＿記載変更
		parentMap.put("key_mkm_div_kisai_chg", setSearchValueForCheckBox(bean[0], "申込区分＿記載変更"));
		// ＫＥＹ＿申込区分＿キャンセル
		parentMap.put("key_mkm_div_cncl", setSearchValueForCheckBox(bean[0], "申込区分＿キャンセル"));
		// ＫＥＹ＿申込区分＿キャンセル／取消
		parentMap.put("key_mkm_div_cncl_cl", setSearchValueForCheckBox(bean[0], "申込区分＿キャンセル／取消"));
		// ＫＥＹ＿申込区分＿取消
		parentMap.put("key_mkm_div_cl", setSearchValueForCheckBox(bean[0], "申込区分＿取消"));
		// ＫＥＹ＿ステータス＿未処理
		parentMap.put("key_stat_trn_mi", setSearchValueForCheckBox(bean[0], "ステータス＿未処理"));
		// ＫＥＹ＿ステータス＿処理中
		parentMap.put("key_stat_trn_chu", setSearchValueForCheckBox(bean[0], "ステータス＿処理中"));
		// ＫＥＹ＿ステータス＿処理済
		parentMap.put("key_stat_trn_zm", setSearchValueForCheckBox(bean[0], "ステータス＿処理済"));
		// ＫＥＹ＿ステータス＿ＣＳＶ出力済
		parentMap.put("key_stat_csv_oputzm", setSearchValueForCheckBox(bean[0], "ステータス＿ＣＳＶ出力済"));
		// ＫＥＹ＿ステータス＿工事完了
		parentMap.put("key_stat_kj_fin", setSearchValueForCheckBox(bean[0], "ステータス＿工事完了"));
		// ＫＥＹ＿注文種類＿番ポ移転
		parentMap.put("key_chumn_kind_bmp_iten", setSearchValueForCheckBox(bean[0], "注文種類＿番ポ移転"));
		// ＫＥＹ＿注文種類＿番ポ戻り
		parentMap.put("key_chumn_kind_bmp_return", setSearchValueForCheckBox(bean[0], "注文種類＿番ポ戻り"));
		// ＫＥＹ＿注文種類＿事業者間移転
		parentMap.put("key_chumn_kind_jgsk_iten", setSearchValueForCheckBox(bean[0], "注文種類＿事業者間移転"));
		// ＫＥＹ＿注文種類＿番ポ廃止
		parentMap.put("key_chumn_kind_bmp_haishi", setSearchValueForCheckBox(bean[0], "注文種類＿番ポ廃止"));
		// ＫＥＹ＿提供可否＿可回答
		parentMap.put("key_tk_kh_ka_answer", setSearchValueForCheckBox(bean[0], "提供可否＿可回答"));
		// ＫＥＹ＿提供可否＿否回答
		parentMap.put("key_tk_kh_hi_answer", setSearchValueForCheckBox(bean[0], "提供可否＿否回答"));
		// ＫＥＹ＿提供可否＿未回答
		parentMap.put("key_tk_kh_mi_answer", setSearchValueForCheckBox(bean[0], "提供可否＿未回答"));
		// ＫＥＹ＿個人法人＿個人
		parentMap.put("key_kojin_hjin_kojin", setSearchValueForCheckBox(bean[0], "個人法人＿個人"));
		// ＫＥＹ＿個人法人＿法人
		parentMap.put("key_kojin_hjin_hjin", setSearchValueForCheckBox(bean[0], "個人法人＿法人"));
		//ANK-4685-00-00 ADD START
		// ＫＥＹ＿移転元番号取得＿移転元のみ
		parentMap.put("key_itenm_nosk_itenm", setSearchValueForCheckBox(bean[0], "移転元・番号取得＿移転元のみ"));
		// ＫＥＹ＿移転元番号取得＿番号取得のみ
		parentMap.put("key_itenm_nosk_nosk", setSearchValueForCheckBox(bean[0], "移転元・番号取得＿番号取得のみ"));
		//ANK-4685-00-00 ADD END
		outputMap.put("TUSV010401CC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：他社読込済申請結果確認一覧
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getTUSV010401CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("TUSV010401CC"))
		{
			parentMap = (HashMap)outputMap.get("TUSV010401CC");
		}
		
		if (parentMap != null)
		{
			bean[0].sendMessageString("合計提供可否件数", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("gk_tk_kh_cnt"));
			bean[0].sendMessageString("合計未処理件数", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("gk_mi_trn_cnt"));
		}
		
		// 検索結果リスト
		X31SDataBeanAccessArray searchRsltList = bean[0].getDataBeanArray("検索結果リスト");
		
		ArrayList childList = null;
		if (parentMap != null && parentMap.containsKey("search_rslt_list"))
		{
			childList = (ArrayList)parentMap.get("search_rslt_list");
			
			if (childList != null && childList.size() > 0)
			{
				for (int i = 0; i < childList.size(); i++)
				{
					X31SDataBeanAccess subbean = null;
					if (searchRsltList.getCount() - 1 >= i)
					{
						subbean = searchRsltList.getDataBean(i);
					}
					else
					{
						subbean = searchRsltList.addDataBean();
					}
					HashMap childMap = (HashMap)childList.get(i);
					if (subbean == null)
					{
						continue;
					}
					
					if (childMap != null)
					{
						subbean.sendMessageString("申込区分", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mskm_div"));
						subbean.sendMessageString("申込区分名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mskm_div_nm"));
						subbean.sendMessageString("ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("stat"));
						if (JTUStrConst.PORT_OUT_STAT_SYRCHU.equals((String)childMap.get("stat")) && !JTUStringUtil.isNull((String)childMap.get("uk_tnt_nm")))
						{
							StringBuilder sb = new StringBuilder();
							sb.append((String)childMap.get("stat_nm"));
							sb.append("(");
							sb.append((String)childMap.get("uk_tnt_nm"));
							sb.append(")");
							subbean.sendMessageString("ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, sb.toString());
						}
						else
						{
							subbean.sendMessageString("ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("stat_nm"));
						}
						subbean.sendMessageString("統合オーダＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("togo_order_id"));
						subbean.sendMessageString("オーダ番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("order_no"));
						subbean.sendMessageString("注文種類名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("chumn_kind_nm"));
						subbean.sendMessageString("個人法人名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kojin_hojin_nm"));
						subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("telno"));
						subbean.sendMessageString("契約者名義", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_nm"));
						subbean.sendMessageString("工事希望日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("koji_kibod"));
						subbean.sendMessageString("工事時間帯区分", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("koji_timez_div"));
						subbean.sendMessageString("工事実施方法名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("koji_jssi_way_nm"));
						subbean.sendMessageString("複数番号有無名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hukusu_no_um_nm"));
						subbean.sendMessageString("提供可否", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tk_kh"));
						String tkFailRsn = (String)childMap.get("tk_fail_rsn");
						if (tkFailRsn != null && tkFailRsn.length() >= 2)
						{
							StringBuilder sb = new StringBuilder();
							for (int j = 0; j < tkFailRsn.length(); j++)
							{
								if (j > 0)
								{
									sb.append(JTUStrConst.LINE_CRLF);
								}
								sb.append(tkFailRsn.substring(j, j+1));
							}
							subbean.sendMessageString("提供不可理由", X31CWebConst.DATABEAN_SET_VALUE, sb.toString());
						}
						else
						{
							subbean.sendMessageString("提供不可理由", X31CWebConst.DATABEAN_SET_VALUE, tkFailRsn);
						}
						subbean.sendMessageString("移転先事業者名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("itens_jigyosha_nm"));
						subbean.sendMessageString("ポートアウト番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("port_out_no"));
						subbean.sendMessageString("世代登録年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("gene_add_dtm"));
						subbean.sendMessageString("受付担当ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("uk_tnt_id"));
						subbean.sendMessageString("受付担当名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("uk_tnt_nm"));
						subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("upd_dtm"));
					}
					else
					{
						subbean.sendMessageString("申込区分", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("申込区分名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("統合オーダＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("オーダ番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("注文種類名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("個人法人名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("契約者名義", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("工事希望日", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("工事時間帯区分", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("工事実施方法名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("複数番号有無名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("提供可否", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("提供不可理由", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("移転先事業者名", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("ポートアウト番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("世代登録年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("受付担当ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("受付担当名", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
				}
			}
		}
		
		return bean;
	}
	
	/**
	 * チェックボックスの選択状態を検索用の値に変換する
	 * @param serviceBean サービスフォームBean
	 * @param dispColName 画面項目に対応するBean項目
	 * @return String
	 */
	private String setSearchValueForCheckBox(X31SDataBeanAccess serviceBean, String dispColName)
	{
		// 画面項目のチェック状態を判定
		// チェック状態がtrueの場合
		if (serviceBean.sendMessageBoolean(dispColName, X31CWebConst.DATABEAN_GET_VALUE))
		{
			// 検索用の値を"1"に設定
			return JTUStrConst.UM_YK;
		}
		// チェック状態がfalseの場合
		else
		{
			// 検索用の値を"0"に設定
			return JTUStrConst.UM_NON;
		}
	}
}
