/*********************************************************************
 *	All Rights reserved,Copyright K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JCHChangeGroupKei
 *	ソースファイル名：JCHChangeGroupKei.java
 *	作成者			：富士通
 *	日付			：2024年04月04日
 *＜機能概要＞
 *	料金グループ計文言変更処理部品
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2024/04/04	富士通		新規作成
 *	v71.00.00   2024/05/29  FJ）久山	【ANK-4468-00-01】eo光ネット「シンプルプラン」追加対応
 *
 **********************************************************************/

package eo.web.webview.common;

import java.util.ArrayList;
import java.util.HashMap;

import eo.common.constant.JACStrConst;
import eo.common.util.JKKStringUtil;


/**
 * 料金グループ計文言変更処理部品
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
public class JCHChangeGroupKei
{
	/**
	 * グループ計変更情報取得情報取得マップCCID
	 */
	private static final String MAP_CC_ID = "GETCHANGEGROUPKEIINFCC";
	
	/**
     * 料金グループコード
     */
    public static final String PRC_GRP_CD = "prc_grp_cd";
	
    /**
     * 料金コースコード
     */
    public static final String PCRS_CD = "pcrs_cd";
    
    /**
     * 料金サービスコード
     */
    public static final String PRC_SVC_CD = "prc_svc_cd";
    
    /**
     * 料金項目コード
     */
    public static final String PRC_KMK_CD = "prc_kmk_cd";
    
    /**
     * 料金項目名称
     */
    public static final String PRC_KMK_NM = "prc_kmk_nm";
    
    /**
     * インデント数
     */
    public static final String INDENT_CNT = "indent_cnt";
    
    /**
     * 料金グループコード
     */
    public static final String PRC_GRP_CD_OUT = "prc_grp_cd_out";

    /**
     * 料金コースコード
     */
    public static final String PCRS_CD_OUT = "pcrs_cd_out";

    /**
     * 料金サービスコード
     */
    public static final String PRC_SVC_CD_OUT = "prc_svc_cd_out";

    /**
     * 料金項目コード
     */
    public static final String PRC_KMK_CD_OUT = "prc_kmk_cd_out";
    
	/**
	 * 請求内訳リストの編集
	 * @param childList
	 * @return childList
	 */
	
	@SuppressWarnings("unchecked")
	public static ArrayList changeGroupKei(ArrayList childList, HashMap outputMap)

	{
		HashMap MAP_CC_IDMap = null;
		if (outputMap.containsKey(MAP_CC_ID))
		{
			MAP_CC_IDMap = (HashMap)outputMap.get(MAP_CC_ID);
		}
		ArrayList childList1 = null;
		childList1 = (ArrayList)MAP_CC_IDMap.get("EZM0321B010CBSMsg1List_1");
		int listSize1 = childList1.size();
		
		ArrayList<String>  workParamList1 = new ArrayList<String>();
		
			for (int i = 0; i < listSize1; i++)
			{
				HashMap childMap1 = (HashMap)childList1.get(i);
				
				if (childMap1 != null)
				{
					// ID計の業務パラメータ設定値取得
					workParamList1.add((String)childMap1.get("work_param_sette_value"));
				}
			}
		
		ArrayList childList2 = null;
		childList2 = (ArrayList)MAP_CC_IDMap.get("EZM0321B010CBSMsg1List_2");
		int listSize2 = childList2.size();
		
		ArrayList<String>  workParamList2 = new ArrayList<String>();
		
			for (int i = 0; i < listSize2; i++)
			{
				HashMap childMap2 = (HashMap)childList2.get(i);
				
				if (childMap2 != null)
				{
					// グループ計の業務パラメータ設定値取得
					workParamList2.add((String)childMap2.get("work_param_sette_value"));
				}
			}
		
		ArrayList<HashMap<String, Object>> childList3 = null;
		childList3 = (ArrayList)MAP_CC_IDMap.get("ECH0391A010CBSMsg1List");
		
		String rePrcKmkNm = "";
		
		//料金項目名称取得
		if(!JKKStringUtil.isNullEmpty(childList3))
		{
			Object objectPrcKmkNm = childList3.get(0).get("prc_kmk_nm");
			if(objectPrcKmkNm != null)
			{
				rePrcKmkNm = objectPrcKmkNm.toString();
			}
		}
		
		boolean prcKmkNmFlg = false;

		for (int i = 0; i < childList.size(); i++)
		{
			HashMap<String, String> childMap = (HashMap<String, String>)childList.get(i);
			
			//ANK-4468-00-01 ADD START
			// 料金調整区分が"03"の場合、シンプルプランID計の判定を行わない
			String prcDiv = (String)childMap.get("prc_div");
			if(!JKKStringUtil.isNullEmpty(prcDiv) && JACStrConst.PRC_ADJ_DIV_DEL.equals(prcDiv))
			{
				continue;
			}
			//ANK-4468-00-01 ADD END
			
			StringBuffer str_Buff = new StringBuffer();
			str_Buff.append(childMap.get(PRC_GRP_CD));
			str_Buff.append(",");
			str_Buff.append(childMap.get(PCRS_CD));
			str_Buff.append(",");
			str_Buff.append(childMap.get(PRC_SVC_CD));
			str_Buff.append(",");
			str_Buff.append(childMap.get(PRC_KMK_CD));
			String cdJoin = str_Buff.toString();
			
			StringBuffer str_Buff2 = new StringBuffer();
			str_Buff2.append(childMap.get(PRC_GRP_CD_OUT));
			str_Buff2.append(",");
			str_Buff2.append(childMap.get(PCRS_CD_OUT));
			str_Buff2.append(",");
			str_Buff2.append(childMap.get(PRC_SVC_CD_OUT));
			str_Buff2.append(",");
			str_Buff2.append(childMap.get(PRC_KMK_CD_OUT));
			String cdJoin2 = str_Buff2.toString();
			
			//ID計の判定
			if (
					//請求内訳、料金調整、料金変更 初期表示 ECH0101B010CBSMsg1List
					workParamList1.contains(cdJoin)
					||
					//随時請求、随時入金再計算ボタン押下 ECH0051D011CBSMsg2List
					//料金調整、料金変更登録確認ボタン押下 ECH0101D011CBSMsg2List ECH0101D012CBSMsg2List
					workParamList1.contains(cdJoin2))
			{
				prcKmkNmFlg = true;
				break;
			}
		}

		//ANK-4468-00-01 MOD START
//		if(prcKmkNmFlg == false)
		if(prcKmkNmFlg == false || JKKStringUtil.isNullEmpty(rePrcKmkNm))
		//ANK-4468-00-01 MOD END
		{
			return childList;
		}
		
		for (int i = 0; i < childList.size(); i++)
		{
			HashMap<String, String> childMap = (HashMap<String, String>)childList.get(i);
			
			StringBuffer str_Buff = new StringBuffer();
			str_Buff.append(childMap.get(PRC_GRP_CD));
			str_Buff.append(",");
			str_Buff.append(childMap.get(PCRS_CD));
			str_Buff.append(",");
			str_Buff.append(childMap.get(PRC_SVC_CD));
			str_Buff.append(",");
			str_Buff.append(childMap.get(PRC_KMK_CD));
			String cdJoin = str_Buff.toString();
			
			StringBuffer str_Buff2 = new StringBuffer();
			str_Buff2.append(childMap.get(PRC_GRP_CD_OUT));
			str_Buff2.append(",");
			str_Buff2.append(childMap.get(PCRS_CD_OUT));
			str_Buff2.append(",");
			str_Buff2.append(childMap.get(PRC_SVC_CD_OUT));
			str_Buff2.append(",");
			str_Buff2.append(childMap.get(PRC_KMK_CD_OUT));
			String cdJoin2 = str_Buff2.toString();
			
			//料金グループ計の判定
			if (
					//請求内訳、料金調整、料金変更初期表示
					workParamList2.contains(cdJoin)
					||
					//随時請求、随時入金再計算ボタン押下
					//料金調整、料金変更登録確認ボタン押下
					workParamList2.contains(cdJoin2)
				)
			{
				
			/** インデントの編集 */
			String strIndCnt = childMap.get(INDENT_CNT);
			
			int iIndent = 0;
			if (strIndCnt != null)
			{
				iIndent = Integer.parseInt(strIndCnt);
			}
			// インデントを作成。
			StringBuffer sbIndent = new StringBuffer(10);
			for (int ix=0; ix<iIndent; ix++)
			{
				sbIndent.append("　");
			}
			// 料金項目名称を取得し、インデントを付加する
			rePrcKmkNm = sbIndent.append(rePrcKmkNm).toString();
			
			childMap.put(PRC_KMK_NM, rePrcKmkNm);

			}
		}

		return childList;
	}	
	
}