/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCNHyojnContAtDslAdd
*	ソースファイル名	：JBSbatCNHyojnContAtDslAdd.java
*	作成者				：富士通　
*	作成日				：2025年03月04日
*＜機能概要＞
*　標準コンテンツ自動解約登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v74.00.00	2025/03/04	FJ)謝		【ANK-4665-00-00】量販・訪販WebのeoID取得方法変更(追加要件対応)
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatCNIFM025;
import eo.common.constant.JCKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.constant.JPCModelConstant;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JCCBatchEsbInterface;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCNHyojnContAtDslAdd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	/** 初回エラーログ出力フラグ true:初回、false:２回目以降*/
	private boolean firstErrLogOutputFlg = true;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// ■■■標準コンテンツ自動解約登録サービスを呼び出す■■■
		HashMap<String, Object> outputMap = null;
		try
		{
			outputMap = invokeServiceCnsv0069(inMap);
		}
		catch (Throwable e)
		{
			// 何もしない
		}
		
		// リターンコード 
		String returnCode = JCCBatchEsbInterface.getReturnCode(outputMap);
		// CCMGリターンコード 
		String ccmgReturnCode = "";
		if (outputMap != null)
		{
			// サービスの処理結果
			HashMap<String, Object> cnsv006901ccMap = (HashMap<String, Object>)outputMap.get("CNSV006901CC");
			if (cnsv006901ccMap != null)
			{
				ccmgReturnCode = getNullToStr((String)cnsv006901ccMap.get("return_cd"));
			}
		}
		
		// 異常の場合
		if(!JCCBatchEsbInterface.RETURN_CODE_SUCCESS.equals(returnCode) || !JCKStrConst.PMP_NORMAL_END.equals(ccmgReturnCode))
		{
			// エラーログを出力
			String errNaiyo = "";
			
			// 排他エラーの場合
			if (JCKStrConst.PMP_ERR_EXCLUSION.equals(ccmgReturnCode))
			{
				errNaiyo= "標準コンテンツ自動解約登録　最終更新日時チェックエラー　CKIFE012 RETURN_CD:" + ccmgReturnCode;
			}
			// それ以外の場合
			else
			{
				errNaiyo= "標準コンテンツ自動解約登録　更新エラーチェックエラー　CKIFE012 RETURN_CD:" + ccmgReturnCode;
			}
			
			errLogOutput(inMap.getString(JBSbatCNIFM025.SYSID), errNaiyo);
			
			return null;
		}
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * エラーログ出力処理を行う
	 * @param sysid SYSID
	 * @param errNaiyo エラー内容
	 * @throws Exception
	 */
	private void errLogOutput(String sysid, String errNaiyo) throws Exception
	{
		// 初回エラーログ出力の場合
		if (firstErrLogOutputFlg)
		{
			// エラーログを出力する
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECNB0580KW, new String[] {});
			commonItem.addErrorCount(1);
			
			firstErrLogOutputFlg = false;
		}
		
		// インフォメーションログを出力する
		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECNB0590AI, new String[] {sysid, errNaiyo});
	}
	
	/**
	 * 標準コンテンツ自動解約登録サービス呼出処理
	 * @param inMap 入力電文
	 * @return サービスの処理結果
	 * @throws Exception
	 */
	private HashMap<String, Object> invokeServiceCnsv0069(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// サービス呼び出し時の引数を生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, "CNSV0069");
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, "CNSV0069OP");
		
		// サービスに渡す業務データを格納するMAP
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 機能コード
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);
		// SYSID
		parentMap.put("sysid", inMap.getString(JBSbatCNIFM025.SYSID));
		// eoID
		parentMap.put("eoid", inMap.getString(JBSbatCNIFM025.EOID));
		
		inputMap.put("CNSV006901CC", parentMap);
		
		// サービスの処理結果が格納されるMAP
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// サービス呼び出し
		JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
		
		return outputMap;
	}
	
	/**
	 * パラメタがNullの場合空白を返却します。
	 * @param str 文字列
	 * @return str
	 */
	private String getNullToStr(String str)
	{
		if (str == null || "".equals(str.trim()))
		{
			return "";
		}
		return str;
	}
}
