/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACMVNOKaikInfoTorikomi
*	ソースファイル名	：JBSbatACMVNOKaikInfoTorikomi.java
*	作成者				：富士通
*	作成日				：2023年06月06日
*＜機能概要＞
*　MVNO会計売掛金情報取込部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v67.00.00	2023/06/06  FJ)吉田あ  【ANK-4401-00-00】新規作成
*	v67.00.01	2023/08/01  FJ)吉田あ  【ANK-4401-00-01】インボイス対応 空白、桁数考慮対応
*
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import eo.business.common.JACBatCommon;
import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatACIFM360;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCHStringUtil;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatCheckUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatACMVNOKaikInfoTorikomi extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 出力ファイル定義 */
	private static final String PRM_OTD = "OTD";
	
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";
	
	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;
	
	/** SQL定義キー(AC_SELECT_002)*/
	private static final String ZM_M_WORK_PARAM_KNRI_AC_SELECT_002 = "AC_SELECT_002";

	/** MVNO会計売掛金情報 */
	private JBSbatBusinessFileUtil mvnoUkkrcFile = null;
	
	/** 料金グループコード設定値 */
	private static final String PRC_GRP_CD_SETTE = "51";
	
	/** 料金コースコード設定値 */
	private static final String PCRS_CD_SETTE = "A81";
	
	/** 料金サービスコード設定値 */
	// ANK-4401-00-01 MOD START
//	private static final String PRC_SVC_CD_SETTE = "PA8101      ";
	private static final String PRC_SVC_CD_SETTE = "PA8101";
	// ANK-4401-00-01 MOD END
	
	/** 単項目チェック項目マップ */
	private HashMap<String, String> singleChkKmkMap = null;

	/** 入力チェック済み項目 */
	/** MVNO会計情報（入力チェック済み).料金グループコード */
	private String prcGrpCd = null;

	/** MVNO会計情報（入力チェック済み).料金コースコード */
	private String pcrsCd = null;

	/** MVNO会計情報（入力チェック済み).料金サービスコード */
	private String prcSvcCd = null;

	/** MVNO会計情報（入力チェック済み).料金項目コード */
	private String prcKmkCd = null;

	/** MVNO会計情報（入力チェック済み).請求金額 */
	private String seikyAmnt = null;

	/** MVNO会計情報（入力チェック済み).サービス契約番号 */
	private String svcKeiNo= null;

	/** フリー項目 */
	private String[] freeItems = null;

	/** 業務パラ設定情報 */
	private JBSbatServiceInterfaceMap inf = null;
	
	/** 情報付加 */
	/** 会計内訳種別コード */
	private String kaikUcwkSbtCd = null;
	
	/** 会計内訳種別詳細コード */
	private String kaikUcwkSbtDtlCd = null;
	
	/** 会計内訳コード */
	private String kaikUcwkCd = null;
	
	/** 業務パラメータ設定値.料金グループコード */
	private static final String PRC_GRP_CD = "PRC_GRP_CD";
	
	/** 業務パラメータ設定値.料金コースコード */
	private static final String PCRS_CD = "PCRS_CD";
	
	/** 業務パラメータ設定値.料金サービスコード */
	private static final String PRC_SVC_CD = "PRC_SVC_CD";
	
	/** 業務パラメータ設定値.料金項目コード */
	private static final String PRC_KMK_CD = "PRC_KMK_CD";
	
	/** 業務パラメータ設定値.会計内訳種別コード */
	private static final String UCWK_SBT_CD = "UCWK_SBT_CD";

	/** 業務パラメータ設定値.会計内訳種別詳細コード */
	private static final String UCWK_SBT_DTL_CD = "UCWK_SBT_DTL_CD";

	/** 業務パラメータ設定値.会計内訳コード */
	private static final String UCWK_CD = "UCWK_CD";

	/** 埋め込み文字列を格納する配列 */
	private static HashMap<String, String>itemValueMap = new HashMap<String, String>();
	static
	{
		// 埋め込み文字の初期化（ログ用）
		itemValueMap.put("TXT-ACIFE074-INF1.TRAN_SKBT_CD", "MVNO会計情報.処理識別コード");
		itemValueMap.put("TXT-ACIFE074-INF1.SVC_KEI_NO", "MVNO会計情報.サービス契約番号");
		itemValueMap.put("TXT-ACIFE074-INF1.CELLPHONE_NO", "MVNO会計情報.携帯電話番号");
		itemValueMap.put("TXT-ACIFE074-INF1.PRC_GRP_CD", "MVNO会計情報.料金グループコード");
		itemValueMap.put("TXT-ACIFE074-INF1.PCRS_CD", "MVNO会計情報.料金コースコード");
		itemValueMap.put("TXT-ACIFE074-INF1.PRC_SVC_CD", "MVNO会計情報.料金サービスコード");
		itemValueMap.put("TXT-ACIFE074-INF1.PRC_KMK_CD", "MVNO会計情報.料金項目コード");
		itemValueMap.put("TXT-ACIFE074-INF1.SEIKY_JIKI_SHITEI", "MVNO会計情報.請求時期指定");
		itemValueMap.put("TXT-ACIFE074-INF1.SEIKY_YM", "MVNO会計情報.請求年月");
		itemValueMap.put("TXT-ACIFE074-INF1.SEIKY_AMNT", "MVNO会計情報.請求金額");
	}
	
	/** 単項目のエラーメッセージマップ（key:単一項目名 value:業務パラメータ管理ID */
	private static HashMap<String, String> messageKeyMap = new HashMap<String, String>();
	static 
	{
		messageKeyMap.put("SVC_KEI_NO", JACStrConst.WKPARA_AC_MSG_NO_SVCNOERR);
		messageKeyMap.put("PRC_GRP_CD", JACStrConst.WKPARA_AC_MSG_PRGP_CD_ERR);
		messageKeyMap.put("PCRS_CD", JACStrConst.WKPARA_AC_MSG_PCRS_CD_ERR);
		messageKeyMap.put("PRC_SVC_CD", JACStrConst.WKPARA_AC_MSG_PRCSVC_CD_ERR);
		messageKeyMap.put("PRC_KMK_CD", JACStrConst.WKPARA_AC_MSG_PRCKMK_CD_ERR);
		messageKeyMap.put("SEIKY_AMNT", JACStrConst.WKPARA_AC_MSG_SEIKYAMNT_ERR);
	}

	/** 業務パラメータ設定情報リスト*/
	private List<JBSbatServiceInterfaceMap> workParamSetteInfList = null;
	
	/** 業務パラメータ設定情報項目数*/
	private static final int WORK_PARAM_SETTE_INF_CNT = 7;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// DBアクセスクラスを生成します
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		
		// FREEITEMの取得
		this.freeItems = super.freeItem.split(JACStrConst.SEMI_COLON);
		
		// MVNO会計売掛金情報（業務パラメータからの編集）
		this.mvnoUkkrcFile = createFile(freeItems[1], freeItems[0]);
		
		// 単項目チェック用Map生成
		singleChkKmkMap = new HashMap<String, String>();
		singleChkKmkMap.put("TXT-ACIFE074-INF1.SVC_KEI_NO", "MVNO会計情報.サービス契約番号");
		singleChkKmkMap.put("TXT-ACIFE074-INF1.PRC_GRP_CD", "MVNO会計情報.料金グループコード");
		singleChkKmkMap.put("TXT-ACIFE074-INF1.PCRS_CD", "MVNO会計情報.料金コースコード");
		singleChkKmkMap.put("TXT-ACIFE074-INF1.PRC_SVC_CD", "MVNO会計情報.料金サービスコード");
		singleChkKmkMap.put("TXT-ACIFE074-INF1.PRC_KMK_CD", "MVNO会計情報.料金項目コード");
		singleChkKmkMap.put("TXT-ACIFE074-INF1.SEIKY_AMNT", "MVNO会計情報.請求金額");
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		try
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");

			setCheckedItem(inMap);
			
			// (1)形式チェック（レコード毎）
			if (!isSingleCheckACIFE074_INF1(inMap.getMap(), singleChkKmkMap))
			{
				// エラーの場合は処理終了
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0500CE);
			}
			
			// (2)データチェック（レコード毎）
			if (!chkData(inMap.getMap(), singleChkKmkMap))
			{
				// エラーの場合は処理終了
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EZEB0502AE);
			}
			
			// (3)情報付加（レコード毎）
			// 業務パラメータ設定情報読込
			getAdditionalInfo(inMap);
			
			// (4)MVNO会計売掛金情報の作成（レコード毎）
			outputMvnoKaikUkkInfoFile();
			
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
			return null;
		} 
		catch (Exception e)
		{
			// MVNO会計売掛金情報
			JCCBatCommon.closeBusinessFileUtil(this.mvnoUkkrcFile);
			
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]例外発生" + e.toString());
			throw e;
		}
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_WORK_PARAM_KNRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		// MVNO会計売掛金情報
		JCCBatCommon.closeBusinessFileUtil(this.mvnoUkkrcFile);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 *入力情報（MVNO会計情報）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 TXT-ACIFE074-INF1.SVC_KEI_NO			MVNO会計情報.サービス契約番号
	 *			 TXT-ACIFE074-INF1.SVC_KEI_NO			MVNO会計情報.サービス契約番号
	 *			 TXT-ACIFE074-INF1.SVC_KEI_NO			MVNO会計情報.サービス契約番号
	 *			 TXT-ACIFE074-INF1.PRC_GRP_CD			MVNO会計情報.料金グループコード
	 *			 TXT-ACIFE074-INF1.PRC_GRP_CD			MVNO会計情報.料金グループコード
	 *			 TXT-ACIFE074-INF1.PRC_GRP_CD			MVNO会計情報.料金グループコード
	 *			 TXT-ACIFE074-INF1.PCRS_CD				MVNO会計情報.料金コースコード
	 *			 TXT-ACIFE074-INF1.PCRS_CD				MVNO会計情報.料金コースコード
	 *			 TXT-ACIFE074-INF1.PCRS_CD				MVNO会計情報.料金コースコード
	 *			 TXT-ACIFE074-INF1.PRC_SVC_CD			MVNO会計情報.料金サービスコード
	 *			 TXT-ACIFE074-INF1.PRC_SVC_CD			MVNO会計情報.料金サービスコード
	 *			 TXT-ACIFE074-INF1.PRC_SVC_CD			MVNO会計情報.料金サービスコード
	 *			 TXT-ACIFE074-INF1.PRC_KMK_CD			MVNO会計情報.料金項目コード
	 *			 TXT-ACIFE074-INF1.PRC_KMK_CD			MVNO会計情報.料金項目コード
	 *			 TXT-ACIFE074-INF1.SEIKY_AMNT			MVNO会計情報.料金項目コード
	 *			 TXT-ACIFE074-INF1.SEIKY_AMNT			MVNO会計情報.請求金額
	 *			 TXT-ACIFE074-INF1.SEIKY_AMNT			MVNO会計情報.請求金額
	 *			 TXT-ACIFE074-INF1.SEIKY_AMNT			MVNO会計情報.請求金額
	 *			 TXT-ACIFE074-INF1.SEIKY_AMNT			MVNO会計情報.請求金額
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	private boolean isSingleCheckACIFE074_INF1(HashMap rsMap, HashMap itemvalueMap)
	{
		// 単項目チェックを行います
		String strValue = null;
		
		// サービス契約番号項目チェック
		strValue = (String)rsMap.get("SVC_KEI_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0450CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.SVC_KEI_NO")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0460CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.SVC_KEI_NO")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "10", "10"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0470CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.SVC_KEI_NO")});
			return false;
		}

		// 料金グループコード項目チェック
		strValue = (String)rsMap.get("PRC_GRP_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0450CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PRC_GRP_CD")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji3"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0460CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PRC_GRP_CD")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu1", "2"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0470CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PRC_GRP_CD")});
			return false;
		}

		// 料金コースコード項目チェック
		strValue = (String)rsMap.get("PCRS_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0450CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PCRS_CD")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji3"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0460CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PCRS_CD")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu1", "3"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0470CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PCRS_CD")});
			return false;
		}

		// 料金サービスコード項目チェック
		strValue = (String)rsMap.get("PRC_SVC_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0450CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PRC_SVC_CD")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji3"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0460CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PRC_SVC_CD")});
			return false;
		}
		// 桁数チェック
		// ANK-4401-00-01 MOD START
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2","12", "12"}))
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2","1", "12"}))
		// ANK-4401-00-01 MOD END
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0470CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PRC_SVC_CD")});
			return false;
		}
		// 料金項目コード項目チェック
		strValue = (String)rsMap.get("PRC_KMK_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0450CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PRC_KMK_CD")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0460CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PRC_KMK_CD")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "11", "11"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0470CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PRC_KMK_CD")});
			return false;
		}
		// 請求金額項目チェック
		strValue = (String)rsMap.get("SEIKY_AMNT");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0450CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.SEIKY_AMNT")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "1", "12"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0470CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.SEIKY_AMNT")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"long2"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EACB0460CE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.SEIKY_AMNT")});
			return false;
		}

		return true;
	}

	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	/**
	 * データチェック
	 * 
	 * @param inMap
	 *            入力電文
	 * @return 判定結果
	 * @throws Exception
	 */
	private boolean chkData(HashMap rsMap, HashMap itemvalueMap) throws Exception
	{
		// データチェックを行います
		String strValue = null;
	
		// 料金グループコード設定値チェック
		strValue = (String)rsMap.get("PRC_GRP_CD");
		if (!PRC_GRP_CD_SETTE.equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EZEB0501AE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PRC_GRP_CD")});
			return false;
		}
		
		// 料金コースコード設定値チェック
		strValue = (String)rsMap.get("PCRS_CD");
		if (!PCRS_CD_SETTE.equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EZEB0501AE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PCRS_CD")});
			return false;
		}
		
		// 料金サービスコード設定値チェック
		strValue = (String)rsMap.get("PRC_SVC_CD");
		if (!PRC_SVC_CD_SETTE.equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EZEB0501AE", new String[]{
					(String)itemvalueMap.get("TXT-ACIFE074-INF1.PRC_SVC_CD")});
			return false;
		}

		return true;
	}

	/**
	 * 入力チェック済み項目取込
	 * 
	 * @param inMap
	 * @throws Exception
	 */
	private void setCheckedItem(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setCheckedItem]");
		
		// 料金グループコード
		this.prcGrpCd = inMap.getString(JBSbatACIFM360.PRC_GRP_CD);
		// 料金コースコード
		this.pcrsCd = inMap.getString(JBSbatACIFM360.PCRS_CD);
		// 料金サービスコード
		this.prcSvcCd = inMap.getString(JBSbatACIFM360.PRC_SVC_CD);
		// 料金項目コード
		this.prcKmkCd = inMap.getString(JBSbatACIFM360.PRC_KMK_CD);
		// 請求金額
		this.seikyAmnt = inMap.getString(JBSbatACIFM360.SEIKY_AMNT);
		// サービス契約番号
		this.svcKeiNo = inMap.getString(JBSbatACIFM360.SVC_KEI_NO);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setCheckedItem]");
	}
	
	/**
	 * 業務パラメータ設定情報リストの取得処理
	 * 
	 * @return List<JBSbatCommonDBInterface> 業務パラメータ設定情報リスト
	 * @throws Exception 業務パラメータ管理取得時の例外
	 */
	private List<JBSbatServiceInterfaceMap> getWorkParamSetteInfList() throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getWorkParamSetteInfList]");

		// 業務パラメータ設定情報リスト
		List<JBSbatServiceInterfaceMap> list = new ArrayList<JBSbatServiceInterfaceMap>();

		// パラメータ取得部品
		JACbatParamUtil paramUtil = new JACbatParamUtil(commonItem);

		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getWorkParamSetteInfList][業務パラメータ管理．検索条件：" + JACStrConst.WKPRA_AC_MVNO_KAIK_IF_ + "%, " + super.opeDate + "]");

		ArrayList<String> workPamamMap = null;
		try
		{
			// 業務パラメータ取得（業務パラメータ設定情報）
			workPamamMap = getWorkParamSetteValue(JACStrConst.WKPRA_AC_MVNO_KAIK_IF_);
			
		}
		finally
		{
			paramUtil.close();
		}

		if (workPamamMap != null && workPamamMap.size() > 0)
		{
			assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getWorkParamSetteInfList][検索結果有]");

			for (String workParamSetteValue : workPamamMap)
			{
				if (!JCHStringUtil.isNullBlank(workParamSetteValue))
				{
					// 業務パラメータ設定情報リスト設定
					String[] params = workParamSetteValue.split(JACStrConst.COMMA);
					if (params.length == WORK_PARAM_SETTE_INF_CNT)
					{
						JBSbatServiceInterfaceMap workParamSetteInfMap = new JBSbatServiceInterfaceMap();
						workParamSetteInfMap.setString(PRC_GRP_CD, params[0]);
						workParamSetteInfMap.setString(PCRS_CD, params[1]);
						workParamSetteInfMap.setString(PRC_SVC_CD, params[2]);
						workParamSetteInfMap.setString(PRC_KMK_CD, params[3]);
						workParamSetteInfMap.setString(UCWK_CD, params[4]);
						workParamSetteInfMap.setString(UCWK_SBT_DTL_CD, params[5]);
						workParamSetteInfMap.setString(UCWK_SBT_CD, params[6]);
						list.add(workParamSetteInfMap);
					}
				}
			}
		}

		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getWorkParamSetteInfList]");

		return list;
	}
	
	/**
	 * 業務パラメータ設定情報の取得処理
	 * 
	 * @param inMap MVNO会計情報（入力チェック済み)ファイル
	 * @return JBSbatServiceInterfaceMap 業務パラメータ設定情報
	 * @throws Exception JBSbatServiceInterfaceMapの入出力時の例外
	 */
	private JBSbatServiceInterfaceMap getWorkParamSetteInf(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getWorkParamSetteInf]");
		
		JBSbatServiceInterfaceMap inf = null;
		workParamSetteInfList = getWorkParamSetteInfList();
		boolean KetsugoChkFlg = false;

		if (inMap != null && workParamSetteInfList != null)
		{
			//
			// 下記条件で会計内訳種別コード、会計内訳種別詳細コード、会計内訳コードを検索
			// 
			// 業務パラメータ設定情報.料金グループコード ＝ MVNO会計情報（入力チェック済み).料金グループコード
			// 業務パラメータ設定情報.料金コースコード   ＝ MVNO会計情報（入力チェック済み).料金コースコード
			// 業務パラメータ設定情報.料金サービスコード ＝ MVNO会計情報（入力チェック済み).料金サービスコード
			// 業務パラメータ設定情報.料金項目コード     ＝ MVNO会計情報（入力チェック済み).料金項目コード
			//
			for (JBSbatServiceInterfaceMap workParamSetteInfMap: workParamSetteInfList)
			{
				if (JCHStringUtil.isNullBlank(workParamSetteInfMap.getString(PRC_GRP_CD))
						|| JCHStringUtil.isNullBlank(workParamSetteInfMap.getString(PCRS_CD))
						|| JCHStringUtil.isNullBlank(workParamSetteInfMap.getString(PRC_SVC_CD))
						|| JCHStringUtil.isNullBlank(workParamSetteInfMap.getString(PRC_KMK_CD))
						|| JCHStringUtil.isNullBlank(inMap.getString(JBSbatACIFM360.PRC_GRP_CD))
						|| JCHStringUtil.isNullBlank(inMap.getString(JBSbatACIFM360.PCRS_CD))
						|| JCHStringUtil.isNullBlank(inMap.getString(JBSbatACIFM360.PRC_SVC_CD))
						|| JCHStringUtil.isNullBlank(inMap.getString(JBSbatACIFM360.PRC_KMK_CD)))
				{
					continue;
				}
				
				// ANK-4401-00-01 MOD START
//				if (workParamSetteInfMap.getString(PRC_GRP_CD).equals(inMap.getString(JBSbatACIFM360.PRC_GRP_CD))
//						&& workParamSetteInfMap.getString(PCRS_CD).equals(inMap.getString(JBSbatACIFM360.PCRS_CD))
//						&& workParamSetteInfMap.getString(PRC_SVC_CD).equals(inMap.getString(JBSbatACIFM360.PRC_SVC_CD))
//						&& workParamSetteInfMap.getString(PRC_KMK_CD).equals(inMap.getString(JBSbatACIFM360.PRC_KMK_CD)))
//				{
				if (workParamSetteInfMap.getString(PRC_GRP_CD).equals(inMap.getString(JBSbatACIFM360.PRC_GRP_CD))
						&& workParamSetteInfMap.getString(PCRS_CD).equals(inMap.getString(JBSbatACIFM360.PCRS_CD))
						&& workParamSetteInfMap.getString(PRC_SVC_CD).trim().equals(inMap.getString(JBSbatACIFM360.PRC_SVC_CD))
						&& workParamSetteInfMap.getString(PRC_KMK_CD).equals(inMap.getString(JBSbatACIFM360.PRC_KMK_CD)))
				{
				// ANK-4401-00-01 MOD END
					inf = new JBSbatServiceInterfaceMap();
					inf.setString(UCWK_SBT_CD, workParamSetteInfMap.getString(UCWK_SBT_CD));
					inf.setString(UCWK_SBT_DTL_CD, workParamSetteInfMap.getString(UCWK_SBT_DTL_CD));
					inf.setString(UCWK_CD, workParamSetteInfMap.getString(UCWK_CD));
					
					KetsugoChkFlg = true;
					
					assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getWorkParamSetteInf][業務パラメータ設定情報取得]");
					break;
				}
				
			}
			
			if(!KetsugoChkFlg)
			{
				// 業務パラメータとMVNO会計情報（入力チェック済み)がアンマッチの場合はエラーとする
				commonItem.getLogPrint().printBusinessErrorLog("EZEB0503AE", new String[]{
							(String)inMap.get(JBSbatACIFM360.PRC_GRP_CD), (String)inMap.get(JBSbatACIFM360.PCRS_CD),
							(String)inMap.get(JBSbatACIFM360.PRC_SVC_CD), (String)inMap.get(JBSbatACIFM360.PRC_KMK_CD)});
			}
		}
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getWorkParamSetteInf]");

		return inf;
	}
	
	/**
	 * 付加情報取得
	 * 
	 * @param inMap
	 * @throws Exception
	 */
	private void getAdditionalInfo(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getAdditionalInfo]");
		
		inf = getWorkParamSetteInf(inMap);
		if(inf == null){
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EZEB0504AE);
		}
		kaikUcwkSbtCd = inf.getString(UCWK_SBT_CD);
		kaikUcwkSbtDtlCd = inf.getString(UCWK_SBT_DTL_CD);
		kaikUcwkCd = inf.getString(UCWK_CD);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getAdditionalInfo]");
	}

	/**
	 * ファイル出力
	 * 
	 * @param  filePath  ファイルパス
	 * @param  fileDef   ファイル定義
	 * @return fileUtil  ファイルインスタンス
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatBusinessFileUtil createFile(String filePath, String fileDef) throws Exception 
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][createFile]");

		JBSbatOutputFileUtil trailerFile 	= new JBSbatOutputFileUtil(filePath);
		String tempFileDefName 				= JBSbatAplConst.getAplConstValue(PRM_OTD) + fileDef;
		JBSbatDefFileUtil trailerFileDef 	= new JBSbatDefFileUtil(tempFileDefName, trailerFile);
		JBSbatBusinessFileUtil fileUtil = JCCBatCommon.createBusinessFileUtil(filePath
																			, JACStrConst.ENCODE_MS932
																			, JACBatCommon.chgKaigyo(JACStrConst.LINE_CRLF)
																			, trailerFileDef.getDelimiter());
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][createFile]");
		return fileUtil;
	}

	/**
	 * MVNO会計売掛金情報ファイルの出力を行います。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outputMvnoKaikUkkInfoFile() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputMvnoKaikUkkInfoFile]");
		
		ArrayList<Object> list = new ArrayList<Object>();

		list.add(this.kaikUcwkSbtCd);		// 業務パラ設定値.会計内訳種別コード
		list.add(this.kaikUcwkSbtDtlCd);	// 業務パラ設定値.会計内訳種別詳細コード
		list.add(JACStrConst.KARA_MOJI);	// （請求契約番号）←空文字
		list.add(JACStrConst.KARA_MOJI);	// （会計計上月）←空文字
		list.add(this.kaikUcwkCd);			// 業務パラ設定値.会計内訳コード
		list.add(this.prcGrpCd);			// MVNO会計情報（入力チェック済み).料金グループコード
		list.add(this.pcrsCd);				// MVNO会計情報（入力チェック済み).料金コースコード
		list.add(this.prcSvcCd);			// MVNO会計情報（入力チェック済み).料金サービスコード
		list.add(this.prcKmkCd);			// MVNO会計情報（入力チェック済み).料金項目コード
		list.add(JACStrConst.KARA_MOJI);	// （コンビニ支払予定年月日）←空文字
		list.add("1");						// 件数
		list.add(this.seikyAmnt);			// MVNO会計情報（入力チェック済み).請求金額
		list.add(JACStrConst.KARA_MOJI);	// （請求番号）←空文字
		list.add(JACStrConst.KARA_MOJI);	// （料金月）←空文字
		list.add(this.svcKeiNo);			// MVNO会計情報（入力チェック済み)サービス契約番号
		list.add(JACStrConst.KARA_MOJI);	// （支払方法）←空文字
		list.add(JACStrConst.KARA_MOJI);	//（クレジットカード会社コード）←空文字
		list.add(JACStrConst.KARA_MOJI);	//（コンテンツサービスコード）←空文字
		list.add(JACStrConst.KARA_MOJI);	//（企業識別コード）←空文字
		
		JCCBatCommon.printBusinessFileUtil(this.mvnoUkkrcFile, list);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outputMvnoPrcFile]");
	}
	
	/**
	 * SQLKEY(AC_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_AC_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_AC_SELECT_002);
	}

	/**
	 * 業務パラメータ管理テーブルから業務パラメータ設定値を取得する
	 * @param WorkParamID	業務パラメータID
	 * @return	String	業務パラメータ設定値
	 * @throws Exception
	 */
	private ArrayList<String> getWorkParamSetteValue(String WorkParamId) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getWorkParamSetteValue]");
		
		ArrayList<String> list = new ArrayList<String>();
		executeZM_M_WORK_PARAM_KNRI_AC_SELECT_002(new Object[] {WorkParamId,super.opeDate, super.opeDate});
		JBSbatCommonDBInterface record = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		
		while (record != null)	
		{
			list.add(record.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE));
			record = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getWorkParamSetteValue]");
		return list;

	}
}
