/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHSeikyuYoksiIktAddRls
*	ソースファイル名	：JBSbatCHSeikyuYoksiIktAddRls.java
*	作成者				：富士通
*	作成日				：2020年10月27日
*＜機能概要＞
*	請求抑止一括登録解除部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v52.00.00	2020/10/27   FJ)平野   【ANK-3838-00-00】窓口払い手数料の顧客負担方式の導入 新規作成
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JACbatRknBusinessUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCHbatPrcTaiokrkAdd;
import eo.business.util.file.JBSbatCHIFM096;
import eo.business.util.file.JBSbatCHIFM357;
import eo.business.util.file.JBSbatCHIFM358;
import eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ;
import eo.business.util.table.JBSbatKK_T_SEIKY_KEI;
import eo.business.util.table.JBSbatKK_T_SEIKY_YOKSI;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.constant.JZM0171Constant;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatCheckUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHSeikyuYoksiIktAddRls extends JBSbatBusinessService 
{
	/** 請求抑止一括登録指示ファイルレコード数カウンター */
	private int chifm357RecordCnt = 0;

	/** テーブル(請求契約)*/
	private static final String D_TBL_NAME_KK_T_SEIKY_KEI = "KK_T_SEIKY_KEI";

	/** テーブル(ディレイド処理依頼)*/
	private static final String D_TBL_NAME_CC_T_DLYD_TRN_REQ = "CC_T_DLYD_TRN_REQ";

	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(請求抑止)*/
	private static final String D_TBL_NAME_KK_T_SEIKY_YOKSI = "KK_T_SEIKY_YOKSI";

	/** SQL定義キー(KK_SELECT_019)*/
	private static final String KK_T_SEIKY_KEI_KK_SELECT_019 = "KK_SELECT_019";
	
	/** SQL定義キー(CH_SELECT_005)*/
	private static final String ZM_M_CD_NM_KANRI_CH_SELECT_005 = "CH_SELECT_005";

	/** SQL定義キー(CH_SELECT_006)*/
	private static final String ZM_M_CD_NM_KANRI_CH_SELECT_006 = "CH_SELECT_006";

	/** SQL定義キー(CH_SELECT_002)*/
	private static final String KK_T_SEIKY_YOKSI_CH_SELECT_012 = "CH_SELECT_012";

	/** SQL定義キー(CH_INSERT_001)*/
	private static final String KK_T_SEIKY_YOKSI_CH_INSERT_001 = "CH_INSERT_001";

	/** SQL定義キー(CH_UPDATE_001)*/
	private static final String KK_T_SEIKY_YOKSI_CH_UPDATE_001 = "CH_UPDATE_001";
	
	/** SQL定義キー(CH_UPDATE_002)*/
	private static final String KK_T_SEIKY_YOKSI_CH_UPDATE_002 = "CH_UPDATE_002";

	/** テーブルアクセスクラス(請求契約)*/
	private JBSbatSQLAccess db_KK_T_SEIKY_KEI = null;

	/** テーブルアクセスクラス(ディレイド処理依頼)*/
	private JBSbatSQLAccess db_CC_T_DLYD_TRN_REQ = null;

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;

	/** テーブルアクセスクラス(請求抑止)*/
	private JBSbatSQLAccess db_KK_T_SEIKY_YOKSI= null;
	
	/** 料金対応記録登録部品 */
	private JCHbatPrcTaiokrkAdd jCHbatPrcTaiokrkAdd = null;
	
	/** エラーマップ */
	private HashMap<String, String> errMap = null;
	
	/** 抑止コードマップ */
	private HashMap<String, String> yoksiCdMap = null;
	
	/** 抑止情報マップ */
	private HashMap<String, String> yoksiInfoMap = null;
	
	/** 退避．エラーコード */
	private String tmpErrCd = null;
	
	/** ユーザーID */
	private String userId = null;
	
	/** エンコード */
	private String encode = null;
	
	/** 請求抑止コード */
	private String seikyYoksiCd = null;
	
	/** 請求抑止解除フラグ */
	private boolean yoksiRlsFlg = false;
	
	/** 埋め込み文字列を格納する配列 */
	private HashMap<String, String> itemValueMap = null;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		db_KK_T_SEIKY_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIKY_KEI);
		db_CC_T_DLYD_TRN_REQ = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_DLYD_TRN_REQ);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_KK_T_SEIKY_YOKSI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIKY_YOKSI);
		
		// 埋め込み文字の初期化
		itemValueMap = new HashMap<String, String>();
		// ログ出力用のメッセージをマップに設定します
		itemValueMap.put("TXT-CHIFM357-INF1.TRAN_DIV", "請求抑止一括登録指示ファイル.処理区分");
		itemValueMap.put("TXT-CHIFM357-INF1.SEIKY_KEI_NO", "請求抑止一括登録指示ファイル.請求契約番号");
		itemValueMap.put("TXT-CHIFM357-INF1.SEIKY_YOKSI_CD", "請求抑止一括登録指示ファイル.請求抑止コード");
		itemValueMap.put("TXT-CHIFM357-INF1.TAIORRKI_RENDO_TG_FLG", "請求抑止一括登録指示ファイル.対応履歴連動対象フラグ");
		itemValueMap.put("TXT-CHIFM357-INF1.KIJI", "請求抑止一括登録指示ファイル.記事");

		
		// 業務パラメータ、システムパラメータ取得
		this.getWorkSysPara();
		
		//請求抑止コード名称を取得
		this.getCdNm("CD00111");
	
		String[] freeItems = super.freeItem.split(JACStrConst.FREE_DIV);
		
		// ユーザID取得
		this.getUserId(freeItems[0]);
		
		// エンコード取得
		this.encode = freeItems[1];

		// 料金対応記録登録部品の初期処理
		jCHbatPrcTaiokrkAdd = new JCHbatPrcTaiokrkAdd(super.commonItem, userId);
		
	}

	/**
	 * 主処理
	 * @param mastMap　入力電文
	 * @return outputItem 出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		super.logPrint.printDebugLog("execute_START");
		
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		// 入力ファイルが0件のレコードであればヘッダを作成
		
		if (chifm357RecordCnt == 0)
		{
			// エラーファイル作成
			outputItem.addOutMapList_2(this.makeHeader(mastMap));
			chifm357RecordCnt++;
		}
		
		// 入力Ｍ＝nullの場合
		if(mastMap.getMap().size() == 0)
		{
			
			String[] params = new String[]{"請求抑止一括登録指示ファイル"};
			// エラーログ:ファイル形式チェックエラー
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1420TE,params);
			// エラーコード設定
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_H001;
			
			// エラーファイル作成
			outputItem.addOutMapList_2(this.makeErrFile(mastMap));
		}
		// 上記以外の場合
		else
		{
			
			// 単項目チェック及び関連チェックで正常の場合
			if(isSingleCheckCHIFM357_INF1(mastMap,itemValueMap) && isKnrnKmkChk(mastMap))
			{
				// テーブル登録
				this.updTable(mastMap);
				// エラーコード設定
				this.tmpErrCd = JACStrConst.SEIKY_YOKSI_0000;
				// エラーファイル作成
				outputItem.addOutMapList(this.makeErrFile(mastMap));
			}
			// 上記以外の場合
			else
			{
				// エラーファイル作成
				outputItem.addOutMapList_2(this.makeErrFile(mastMap));
			}
		}
		
		super.logPrint.printDebugLog("execute_END");
		return outputItem;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
		
		// DBアクセスクラスをクローズします
		db_KK_T_SEIKY_KEI.close();
		db_CC_T_DLYD_TRN_REQ.close();
		db_ZM_M_CD_NM_KANRI.close();
		db_KK_T_SEIKY_YOKSI.close();
		jCHbatPrcTaiokrkAdd.close();

	}

	
	/**
	 * 業務パラメータ管理及び、システムパラメータ管理から値を取得します。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getWorkSysPara() throws Exception
	{
		this.errMap = new HashMap<String, String>();
		// 業務パラメータ取得
		JACbatParamUtil pu = new JACbatParamUtil(commonItem);
		try
		{
			 // エラーマップに値を設定（キー：エラーコード、値：エラー内容）
			this.errMap.put(JACStrConst.SEIKY_YOKSI_0000,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_0000)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_H001,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_H001)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E001,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E001)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E002,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E002)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E003,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E003)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E004,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E004)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E005,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E005)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E006,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E006)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E007,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E007)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E008,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E008)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E009, 	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E009)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E010, 	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E010)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E011, 	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E011)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E012,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E012)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E013,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E013)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E014,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E014)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E015,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E015)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E016,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E016)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E017,	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E017)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E018, 	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E018)));
			this.errMap.put(JACStrConst.SEIKY_YOKSI_E019, 	pu.getGyoumuParameter(this.makeWorkParaIDErr(JACStrConst.SEIKY_YOKSI_E019)));
			
		}
		finally
		{
			pu.close();
		}
		return;
	}
	
	/**
	 * エラー内容取得用業務パラメータIDを作成します。
	 * 
	 * @param errCd エラーコード
	 * @return String 業務パラメータID
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String makeWorkParaIDErr(String errCd) throws Exception
	{
		StringBuffer buf = new StringBuffer();
		
		buf.append(JACStrConst.SYS_CD_CH);
		buf.append(JACStrConst.UNDER_BAR);
		buf.append(JACStrConst.SEIKY_YOKSI_GET_KEY);
		buf.append(JACStrConst.UNDER_BAR);
		buf.append(errCd);
		
		return buf.toString();
	}
		
	/**
	 * ユーザーIDを取得します。
	 * 
	 * @param dlydTrnReqNo ディレイド処理依頼番号
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getUserId(String dlydTrnReqNo) throws Exception
	{
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		
		whereMap.setValue(dlydTrnReqNo);
		
		// SQL実行
		JBSbatCommonDBInterface dbMap = executeCC_T_DLYD_TRN_REQ_PKSELECT(whereMap.getList().toArray());
		
		this.userId = dbMap.getString(JBSbatCC_T_DLYD_TRN_REQ.ADD_OPEACNT);				// 登録オペレータアカウント

		return;
	}
	
	/**
	 * 入力情報の関連項目チェックを行います。
	 * 
	 * @param mastMap 入力情報
	 * @return boolean チェック結果（true：正常、false：異常あり）
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isKnrnKmkChk(JBSbatServiceInterfaceMap mastMap) throws Exception
	{

		String selectTranDiv = mastMap.getString(JBSbatCHIFM357.TRAN_DIV);			// 処理区分
		
		// 請求契約番号が請求契約スキーマに未存在の場合
		if(!isSikyKeiNo(mastMap))
		{
			String[] params = new String[]{JBSbatKK_T_SEIKY_KEI.TABLE_NAME
					,(String)mastMap.getString(JBSbatCHIFM357.SEIKY_KEI_NO)};
			// ログ出力（ＤＢ未存在エラー）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0260CE, params);
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E008;
			return false;
		}
		
		// 請求抑止コードがコード名称管理スキーマに未存在の場合
		if(!isCdNmKanri(JZM0171Constant.CD00111, mastMap.getString(JBSbatCHIFM357.SEIKY_YOKSI_CD)))
		{
			String[] params = new String[]{JBSbatZM_M_CD_NM_KANRI.TABLE_NAME
					,(String)mastMap.getString(JBSbatCHIFM357.SEIKY_YOKSI_CD)};
			// ログ出力（ＤＢ未存在エラー）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0260CE,params);
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E012;
			return false;
		}
		
		// 処理区分＝"1"（抑止）の場合
		if(JACStrConst.TRAN_DIV_YOKSI.equals(selectTranDiv))
		{
			// 指定の請求抑止コードの請求抑止フラグに"1"のレコードが存在する場合
			if(isSkYoksi(mastMap))
			{
				
				String[] params = new String[]{"入力情報取得処理" ,"入力ファイルの請求抑止コード：" +
						(String)mastMap.getString(JBSbatCHIFM357.SEIKY_YOKSI_CD)
				+"は抑止のレコードが存在しています。"};
				// ログ出力（%1%でエラーが発生しました。 %2%）
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1810TW,params);
				this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E018;
				return false;
			}
		}
		// 処理区分＝"0"（解除）の場合
		else if(JACStrConst.TRAN_DIV_YOKSI_RLS.equals(selectTranDiv))
		{
			// 指定の請求抑止コードの請求抑止フラグに"1"のレコードが存在しない場合
			if(isSkYoksi(mastMap))
			{
				
				String[] params = new String[]{"入力情報取得処理" ,"入力ファイルの請求抑止コード：" +
						(String)mastMap.getString(JBSbatCHIFM357.SEIKY_YOKSI_CD)
				+"は抑止のレコードが存在しません。"};
				// ログ出力（%1%でエラーが発生しました。 %2%）
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1810TW,params);
				this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E019;
				return false;
			}
		}
		
		return true;
	}
	
	/**
	 * 請求契約スキーマを入力情報の請求契約番号で検索し、取得の有無のチェックを行います。
	 * 
	 * @param mastMap 入力情報
	 * @return boolean 判定結果（true：あり、false：なし）
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isSikyKeiNo(JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		
		whereMap.setValue(mastMap.getString(JBSbatCHIFM357.SEIKY_KEI_NO));		// 請求契約番号
		whereMap.setValue(super.opeDate);									// 予約適用年月日
		
		// SQL実行
		executeKK_T_SEIKY_KEI_KK_SELECT_019(whereMap.getList().toArray());
		
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_KK_T_SEIKY_KEI.selectNext();
		
		// 取得なしの場合
		if(dbMap == null)
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 請求抑止スキーマを入力情報の請求契約番号で検索し、取得の有無のチェックを行います。
	 * 
	 * @param mastMap 入力情報
	 * @return boolean 判定結果（true：あり、false：なし）
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isSkYoksi(JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		String tranDiv = mastMap.getString(JBSbatCHIFM357.TRAN_DIV);				//処理区分
		seikyYoksiCd = mastMap.getString(JBSbatCHIFM357.SEIKY_YOKSI_CD);			// 請求抑止コード
		
		// 請求契約番号
		whereMap.setValue(mastMap.getString(JBSbatCHIFM357.SEIKY_KEI_NO));
		
		// SQL実行
		executeKK_T_SEIKY_YOKSI_CH_SELECT_012(whereMap.getList().toArray());
		
		// 結果取得
		JBSbatCommonDBInterface dbMap = db_KK_T_SEIKY_YOKSI.selectNext();
		this.yoksiInfoMap = new HashMap<String, String>();
		while(null != dbMap)
		{
			yoksiInfoMap.put(dbMap.getString(JBSbatKK_T_SEIKY_YOKSI.SEIKY_YOKSI_CD), dbMap.getString(JBSbatKK_T_SEIKY_YOKSI.SEIKY_YOKSI_FLG));
					
			dbMap = db_KK_T_SEIKY_YOKSI.selectNext();
		}
		// 結果が取得できなかった時及び処理区分が"0"の時はエラーとする。
		if (yoksiInfoMap == null && JACStrConst.TRAN_DIV_YOKSI_RLS.equals(tranDiv))
		{
			return true;
		}
		// 処理区分が"1"の場合
		if (JACStrConst.TRAN_DIV_YOKSI.equals(tranDiv))
		{
			// 指示ファイルの請求抑止コードがスキーマに存在し
			if(yoksiInfoMap.containsKey(seikyYoksiCd))
			{
				// 請求抑止フラグが"1(抑止)"の場合はエラー
				if(JACStrConst.SEIKY_YOKSI_FLG.equals(yoksiInfoMap.get(seikyYoksiCd)))
				{
					return true;
					
				}
			}
		}	
		// 処理区分が"0"の場合
		if (JACStrConst.TRAN_DIV_YOKSI_RLS.equals(tranDiv))
		{
			// 指示ファイルの請求抑止コードがスキーマに無ければエラー
			if(!(yoksiInfoMap.containsKey(seikyYoksiCd)))
			{
				return true;
			}
			// 指示ファイルの請求抑止コードがスキーマに存在していた場合
			else if((yoksiInfoMap.containsKey(seikyYoksiCd)))
			{
				// 請求抑止フラグが"0(抑止解除)"の場合はエラー
				if(!(JACStrConst.SEIKY_YOKSI_FLG.equals(yoksiInfoMap.get(seikyYoksiCd))))
				{
					return true;
				}
			}
		}
		return false;
	}
	
	/**
	 * コード名称管理スキーマを検索し、取得の有無のチェックを行います。
	 * 
	 * @param cdSbtCd コード種別コード
	 * @param cdDiv コード区分
	 * @return boolean 判定結果（true：あり、false：なし）
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isCdNmKanri(String cdSbtCd, String cdDiv) throws Exception
	{
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		
		// コード種別コード
		whereMap.setValue(cdSbtCd);
		// コード区分
		whereMap.setValue(cdDiv);
		// 適用開始年月日
		whereMap.setValue(super.opeDate);
		// 適用終了年月日
		whereMap.setValue(super.opeDate);
		
		// SQL実行
		executeZM_M_CD_NM_KANRI_CH_SELECT_006(whereMap.getList().toArray());
		
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_ZM_M_CD_NM_KANRI.selectNext();
		
		// 取得なしの場合
		if(dbMap == null)
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * コード名称管理スキーマを検索し、コード名称の一覧を取得。
	 * 
	 * @param cdSbtCd コード種別コード
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getCdNm(String cdSbtCd) throws Exception
	{
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		
		// コード種別コード
		whereMap.setValue(cdSbtCd);
		// 適用開始年月日
		whereMap.setValue(super.opeDate);
		// 適用終了年月日
		whereMap.setValue(super.opeDate);
		
		// SQL実行
		executeZM_M_CD_NM_KANRI_CH_SELECT_005(whereMap.getList().toArray());
		
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_ZM_M_CD_NM_KANRI.selectNext();
		this.yoksiCdMap = new HashMap<String, String>();
		while(null != dbMap)
		{
			yoksiCdMap.put(dbMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV), dbMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM));
			
			dbMap = db_ZM_M_CD_NM_KANRI.selectNext();
		}
	}
	
	/**
	 * エラーレコードを作成します。
	 * 
	 * @param mastMap 入力M情報
	 * @return JBSbatServiceInterfaceMap 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap makeErrFile(JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		super.logPrint.printDebugLog("makeErrFile_START");
		
		JBSbatServiceInterfaceMap errInf = new JBSbatServiceInterfaceMap();
		
		errInf.set(JBSbatCHIFM358.IKT_ADD_ERR_CD,		this.tmpErrCd);															// 一括登録エラーコード
		errInf.set(JBSbatCHIFM358.ERR_NYO,				this.errMap.get(this.tmpErrCd));										// エラー内容
		errInf.set(JBSbatCHIFM358.SEIKY_YOKSI_CD_NM,				this.yoksiCdMap.get(mastMap.getString(JBSbatCHIFM357.SEIKY_YOKSI_CD)));			// 請求抑止コード区分名称
		errInf.set(JBSbatCHIFM358.TRAN_DIV,	mastMap.getString(JBSbatCHIFM357.TRAN_DIV));										// 請求抑止一括登録指示ファイル.処理区分
		errInf.set(JBSbatCHIFM358.SEIKY_KEI_NO,	mastMap.getString(JBSbatCHIFM357.SEIKY_KEI_NO));								// 請求抑止一括登録指示ファイル.請求契約番号
		errInf.set(JBSbatCHIFM358.SEIKY_YOKSI_CD,	mastMap.getString(JBSbatCHIFM357.SEIKY_YOKSI_CD));							// 請求抑止一括登録指示ファイル.請求抑止コード
		errInf.set(JBSbatCHIFM358.TAIORRKI_RENDO_TG_FLG,	mastMap.getString(JBSbatCHIFM357.TAIORRKI_RENDO_TG_FLG));			// 請求抑止一括登録指示ファイル.対応履歴連動対象フラグ
		errInf.set(JBSbatCHIFM358.KIJI,	mastMap.getString(JBSbatCHIFM357.KIJI));												// 請求抑止一括登録指示ファイル.記事
		errInf.setOutFlg(true);
		
		super.logPrint.printDebugLog("makeErrFile_END");
		return errInf;
	}
	
	/**
	 * テーブルの更新を行います。
	 * 
	 * @param mastMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void updTable(JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		String tranDiv = mastMap.getString(JBSbatCHIFM357.TRAN_DIV);				//処理区分
		String seikyYoksiCd = mastMap.getString(JBSbatCHIFM357.SEIKY_YOKSI_CD);			// 請求抑止コード
		// 請求契約番号
		whereMap.setValue(mastMap.getString(JBSbatCHIFM357.SEIKY_KEI_NO));
		
		// SQL実行
		executeKK_T_SEIKY_YOKSI_CH_SELECT_012(whereMap.getList().toArray());
		
		// 結果取得
		JBSbatCommonDBInterface dbMap = db_KK_T_SEIKY_YOKSI.selectNext();
		while(null != dbMap)
		{
			yoksiInfoMap.put(dbMap.getString(JBSbatKK_T_SEIKY_YOKSI.SEIKY_YOKSI_CD), dbMap.getString(JBSbatKK_T_SEIKY_YOKSI.SEIKY_YOKSI_FLG));
					
			dbMap = db_KK_T_SEIKY_YOKSI.selectNext();
		}
		// 処理区分 = "0(抑止解除)"の場合
		if(JACStrConst.TRAN_DIV_YOKSI_RLS.equals(tranDiv))
		{
			// 指示ファイルの請求抑止コードが"17"もしくは"18"が取得できた時
			if ((JACStrConst.SEIKY_YOKSI_CD_KI_FTN.equals(seikyYoksiCd)||JACStrConst.SEIKY_YOKSI_CD_KO_FTN.equals(seikyYoksiCd)))
			{
				// 企業負担抑止もしくは顧客負担抑止が請求スキーマに存在し
				if(yoksiInfoMap.containsKey(seikyYoksiCd))
				{
					// 請求抑止フラグが"1(抑止)"の場合
					if(JACStrConst.SEIKY_YOKSI_FLG.equals(yoksiInfoMap.get(seikyYoksiCd)))
					{
						// 更新→抑止解除を実行
						this.updSkYoksiRls(mastMap,seikyYoksiCd);
					}
				}
			}
			// 指示ファイルの請求抑止コードが"17"もしくは"18"以外が取得できた時
			else
			{
				// 企業負担抑止もしくは顧客負担抑止以外が請求スキーマに存在し
				if(yoksiInfoMap.containsKey(seikyYoksiCd))
				{
					// 請求抑止フラグが"1(抑止)"の場合
					if(JACStrConst.SEIKY_YOKSI_FLG.equals(yoksiInfoMap.get(seikyYoksiCd)))
					{
						// 更新→抑止解除を実行
						this.updSkYoksiRls(mastMap,seikyYoksiCd);
					}
				}
			}
		}
		// 処理区分 = "1(抑止)"の場合
		if (JACStrConst.TRAN_DIV_YOKSI.equals(tranDiv))
		{
			// 指示ファイルの請求抑止コードが"17"が取得できた時
			if(JACStrConst.SEIKY_YOKSI_CD_KI_FTN.equals(seikyYoksiCd))
			{
				// 企業負担抑止が請求スキーマに存在しない
				if(!(yoksiInfoMap.containsKey(seikyYoksiCd)))
				{
					// 登録を実行
					this.insertSkYoksi(mastMap);
					if(yoksiInfoMap.containsKey(JACStrConst.SEIKY_YOKSI_CD_KO_FTN)&& JACStrConst.SEIKY_YOKSI_FLG.equals(yoksiInfoMap.get(JACStrConst.SEIKY_YOKSI_CD_KO_FTN)))
					{	
						// 更新→抑止解除を実行
						this.updSkYoksiRls(mastMap,JACStrConst.SEIKY_YOKSI_CD_KO_FTN);
						yoksiRlsFlg = true;
					}
				}
				// 企業負担抑止が存在し請求抑止フラグが"0"の場合
				else if(yoksiInfoMap.containsKey(seikyYoksiCd)&& JACStrConst.SEIKY_YOKSI_FLG_RLS.equals(yoksiInfoMap.get(seikyYoksiCd)))
				{	
					// 更新→抑止を実行
					this.updSkYoksi(mastMap);
					// もし顧客負担抑止の請求抑止フラグが"1"で存在していた場合
					if(yoksiInfoMap.containsKey(JACStrConst.SEIKY_YOKSI_CD_KO_FTN)&& JACStrConst.SEIKY_YOKSI_FLG.equals(yoksiInfoMap.get(JACStrConst.SEIKY_YOKSI_CD_KO_FTN)))
					{	
						// 更新→抑止解除を実行
						this.updSkYoksiRls(mastMap,JACStrConst.SEIKY_YOKSI_CD_KO_FTN);
						yoksiRlsFlg = true;
					}
				}
			}
			// 指示ファイルの請求抑止コードが"18"の場合
			else if(JACStrConst.SEIKY_YOKSI_CD_KO_FTN.equals(seikyYoksiCd))
			{
				// 顧客負担抑止が請求スキーマに存在しない
				if(!(yoksiInfoMap.containsKey(seikyYoksiCd)))
				{
					// 登録を実行
					this.insertSkYoksi(mastMap);
					// もし企業負担抑止の請求抑止フラグが"1"で存在していた場合
					if(yoksiInfoMap.containsKey(JACStrConst.SEIKY_YOKSI_CD_KI_FTN)&& JACStrConst.SEIKY_YOKSI_FLG.equals(yoksiInfoMap.get(JACStrConst.SEIKY_YOKSI_CD_KI_FTN)))
					{	
						// 更新→抑止解除を実行
						this.updSkYoksiRls(mastMap,JACStrConst.SEIKY_YOKSI_CD_KI_FTN);
						yoksiRlsFlg = true;
					}
				}
				// 顧客負担抑止が存在し請求抑止フラグが"0"の場合
				else if(yoksiInfoMap.containsKey(seikyYoksiCd)&& JACStrConst.SEIKY_YOKSI_FLG_RLS.equals(yoksiInfoMap.get(seikyYoksiCd)))
				{
					// 更新→抑止を実行
					this.updSkYoksi(mastMap);
					// もし企業負担抑止の請求抑止フラグが"1"で存在していた場合
					if(yoksiInfoMap.containsKey(JACStrConst.SEIKY_YOKSI_CD_KI_FTN)&& JACStrConst.SEIKY_YOKSI_FLG.equals(yoksiInfoMap.get(JACStrConst.SEIKY_YOKSI_CD_KI_FTN)))
					{
						// 更新→抑止解除を実行
						this.updSkYoksiRls(mastMap,JACStrConst.SEIKY_YOKSI_CD_KI_FTN);
						yoksiRlsFlg = true;
					}
				}
			}
			// 指示ファイルの請求抑止コードが"17","18"以外の場合
			else
			{	
				// 請求スキーマに存在しない時
				if(!(yoksiInfoMap.containsKey(seikyYoksiCd)))
				{
					// 登録を実行
					this.insertSkYoksi(mastMap);
				}
				// 請求スキーマに存在し請求抑止フラグが"0"の場合
				else if(yoksiInfoMap.containsKey(seikyYoksiCd)&& JACStrConst.SEIKY_YOKSI_FLG_RLS.equals(yoksiInfoMap.get(seikyYoksiCd)))
				{
					// 更新→抑止を実行
					this.updSkYoksi(mastMap);
				}
			}
		}
		
		// 料金対応記録登録
		this.insertPrcTaiokrk(mastMap);
		
		return;
	}
	
	/**
	 * 請求抑止スキーマに登録します。
	 * 
	 * @param mastMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void insertSkYoksi(JBSbatServiceInterfaceMap mastMap) throws Exception
	{

		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();

		// 請求契約番号
		setParam.setValue(mastMap.get(JBSbatCHIFM357.SEIKY_KEI_NO));
		// 請求抑止コード
		setParam.setValue(mastMap.get(JBSbatCHIFM357.SEIKY_YOKSI_CD));
		// 請求抑止フラグ(抑止)
		setParam.setValue(JACStrConst.SEIKY_YOKSI_FLG);
		// 請求抑止年月日
		setParam.setValue(super.opeDate);
		// 登録年月日時分秒
		setParam.setValue(JCCBatCommon.getSysDateTimeStamp());
		// 登録オペレータアカウント
		setParam.setValue(this.batchUserId);
		// 更新年月日時分秒
		setParam.setValue(JCCBatCommon.getSysDateTimeStamp());
		// 更新オペレータアカウント
		setParam.setValue(this.batchUserId);
		// 無効フラグ
		setParam.setValue(JACStrConst.MK_FLG_YK);
		// SQL実行
		executeKK_T_SEIKY_YOKSI_CH_INSERT_001(setParam.getList().toArray());
		
	}
	
	/**
	 * 請求抑止スキーマを抑止に更新します。
	 * 
	 * @param mastMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void updSkYoksi(JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		// 設定値
		JBSbatCommonDBInterface dbMap = new JBSbatCommonDBInterface();
		
		// 請求抑止年月日
		dbMap.setValue(super.opeDate);
		// 更新オペレータアカウント
		dbMap.setValue(this.batchUserId);
		// 請求契約番号
		dbMap.setValue(mastMap.get(JBSbatCHIFM357.SEIKY_KEI_NO));
		// 請求抑止コード
		dbMap.setValue(mastMap.get(JBSbatCHIFM357.SEIKY_YOKSI_CD));
		
		// SQL実行
		executeKK_T_SEIKY_YOKSI_CH_UPDATE_001(dbMap.getList().toArray());
		
		return;
	}
	
	/**
	 * 請求抑止スキーマを抑止解除に更新します。
	 * 
	 * @param mastMap 入力情報
	 * @param seikyYoksiCd 請求抑止コード
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void updSkYoksiRls(JBSbatServiceInterfaceMap mastMap,String seikyYoksiCd) throws Exception
	{
		super.logPrint.printDebugLog("[S][updSkYoksiRls]");
		
		// 設定値
		JBSbatCommonDBInterface dbMap = new JBSbatCommonDBInterface();
		
		// 請求抑止解除年月日
		dbMap.setValue(super.opeDate);
		// 更新オペレータアカウント
		dbMap.setValue(this.batchUserId);
		// 請求契約番号
		dbMap.setValue(mastMap.get(JBSbatCHIFM357.SEIKY_KEI_NO));
		// 請求抑止コード
		dbMap.setValue(seikyYoksiCd);
		
		super.logPrint.printDebugLog("[S][updSkYoksiRls][dbMap="+ dbMap.getList().toString() + "]");
		
		// SQL実行
		executeKK_T_SEIKY_YOKSI_CH_UPDATE_002(dbMap.getList().toArray());
		
		super.logPrint.printDebugLog("[E][updSkYoksiRls]");
		
		return;
	}
	
	/**
	 * 料金対応記録を登録します。
	 * 
	 * @param mastMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void insertPrcTaiokrk(JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		// 料金対応記録種別詳細コード
		String prcTioKrkSbtDtlCd = null;
		
		// 処理区分
		String tranDiv = mastMap.getString(JBSbatCHIFM357.TRAN_DIV);
		// 請求抑止コード
		String seikyYoksiCd = mastMap.getString(JBSbatCHIFM357.SEIKY_YOKSI_CD);
		// 対応履歴連動対象フラグ
		String taiorrkiRendoTgFlg = mastMap.getString(JBSbatCHIFM357.TAIORRKI_RENDO_TG_FLG);
		// 料金対応記録種別コード
		String prcTioKrkSbtCd = JACStrConst.TKRK_SBT_SEIKY_YOKSI_IKT_ADD_RLS;
		
		// 請求抑止判定結果に応じた料金対応記録種別詳細コードを設定
		// 請求抑止マップ形成
		HashMap<String, Object> yoksiMap = this.getYoksiMap();
		// 請求抑止解除マップ形成
		HashMap<String, Object> yoksiRlsMap = this.getYoksiRlsMap();
		
		// 処理区分 = "1（抑止）"の場合
		if(JACStrConst.TRAN_DIV_YOKSI.equals(tranDiv))
		{
			// ◇請求抑止
			// 料金対応記録種別詳細コード（請求抑止情報に紐付くコード）
			prcTioKrkSbtDtlCd =(String)yoksiMap.get(seikyYoksiCd);
		}
		// 処理区分 = "0（抑止解除）"の場合
		else if(JACStrConst.TRAN_DIV_YOKSI_RLS.equals(tranDiv))
		{
			// ◇請求抑止解除
			// 料金対応記録種別詳細コード（請求抑止情報に紐付くコード）
			prcTioKrkSbtDtlCd =(String)yoksiRlsMap.get(seikyYoksiCd);
		}
		if (yoksiRlsFlg)
		{
			this.insertPrcTaiokrkYoksi(yoksiInfoMap,mastMap);
		}
		// 料金対応記録登録データの設定
		JBSbatServiceInterfaceMap prcTaioInMap = new JBSbatServiceInterfaceMap();
		
		// 01.請求契約番号
		prcTaioInMap.setString(JBSbatCHIFM096.SEIKY_KEI_NO, 				mastMap.get(JBSbatCHIFM357.SEIKY_KEI_NO));
		// 02.サービス契約番号
		prcTaioInMap.setString(JBSbatCHIFM096.SVC_KEI_NO, 					null);
		// 03.対応年月日時分秒
		prcTaioInMap.setString(JBSbatCHIFM096.TAIO_DTM, 					super.opeDate.concat(JCCBatCommon.getSysDateTimeStamp().substring(8)));
		// 04.料金対応記録種別コード
		prcTaioInMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_CD, 		prcTioKrkSbtCd);
		// 05.料金対応記録種別詳細コード
		prcTaioInMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_DTL_CD, 	prcTioKrkSbtDtlCd);
		// 06.記録対象年月
		prcTaioInMap.setString(JBSbatCHIFM096.KIROK_TG_YM, 					null);
		// 07.督促番号
		prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_NO, 					null);
		// 08.督促異動番号
		prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_IDO_NO, 				null);
		// 09.請求番号
		prcTaioInMap.setString(JBSbatCHIFM096.SEIKY_NO,						null);
		// 10.金庫番号
		prcTaioInMap.setString(JBSbatCHIFM096.KNK_NO, 						null);
		// 11.債権番号
		prcTaioInMap.setString(JBSbatCHIFM096.SAIKEN_NO, 					null);
		// 12.入金番号
		prcTaioInMap.setString(JBSbatCHIFM096.NYUKIN_NO, 					null);
		// 13.電子ファイル管理番号
		prcTaioInMap.setString(JBSbatCHIFM096.EFILE_KANRI_NO, 				null);
		// 14.対応履歴連動対象フラグ
		prcTaioInMap.setString(JBSbatCHIFM096.TAIORRKI_RENDO_TG_FLG, 		taiorrkiRendoTgFlg);
		// 15.変更前金額
		prcTaioInMap.setString(JBSbatCHIFM096.AMNT_CHBF, 					null);
		// 16.変更後金額
		prcTaioInMap.setString(JBSbatCHIFM096.AMNT_CHAF, 					null);
		// 17.変更前督促ステータス
		prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHBF, 			null);
		// 18.変更後督促ステータス
		prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHAF, 			null);
		// 19.変更前金庫料金項目コード
		prcTaioInMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHBF, 			null);
		// 20.変更後金庫料金項目コード
		prcTaioInMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHAF, 			null);
		// 21.督促メールパターン
		prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_ML_PTN_CD, 			null);
		// 22.変更前補償費扱いフラグ
		prcTaioInMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHBF, 		null);
		// 23.変更後補償費扱いフラグ
		prcTaioInMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHAF, 		null);
		// 24.記事
		prcTaioInMap.setString(JBSbatCHIFM096.KIJI, 						mastMap.get(JBSbatCHIFM357.KIJI));
		
		// 料金対応記録登録を実行
		jCHbatPrcTaiokrkAdd.prcTaiokrkAdd(prcTaioInMap);
		
		return;
	}
	
	/**
	 *入力情報（請求抑止一括登録指示ファイルリスト）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 TXT-CHIFM357-INF1.TRAN_DIV			請求抑止一括登録指示ファイル.処理区分
	 *			 TXT-CHIFM357-INF1.SEIKY_KEI_NO			請求抑止一括登録指示ファイル.請求契約番号
	 *			 TXT-CHIFM357-INF1.SEIKY_YOKSI_CD		請求抑止一括登録指示ファイル.請求抑止コード
	 *			 TXT-CHIFM357-INF1.TAIORRKI_RENDO_TG_FLG		請求抑止一括登録指示ファイル.対応履歴連動対象フラグ
	 *			 TXT-CHIFM357-INF1.KIJI			請求抑止一括登録指示ファイル.記事
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isSingleCheckCHIFM357_INF1(JBSbatServiceInterfaceMap rsMap,HashMap itemvalueMap) throws Exception
	{
		String strValue = null;
		
		// 処理区分チェック
		strValue = (String)rsMap.getString(JBSbatCHIFM357.TRAN_DIV);
		// 指定有無チェック
		// 処理区分 = 空の場合
		if(JACStrConst.TRAN_DIV_NON_SET.equals(strValue))
		{
			// エラーログ出力:%1%の指定がありません。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1820TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.TRAN_DIV") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E001;
			return false;
		}
		
		// 桁数チェック
		// 処理区分の桁数≠1の場合
		if(strValue.length() != 1)
		{
			// エラーログ出力:%1%の指定が誤っています。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1830TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.TRAN_DIV") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E002;
			return false;
		}
		
		// 属性チェック
		// 処理区分の属性≠半角数字１の場合
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakusuuji1"}))
		{
			// エラーログ出力:%1%に許容されない値が含まれています。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1840TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.TRAN_DIV") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E003;
			return false;
		}
		
		// 規定値チェック
		// 処理区分≠"0"かつ処理区分≠"1"
		if(!JACStrConst.TRAN_DIV_YOKSI_RLS.equals(strValue) && !JACStrConst.TRAN_DIV_YOKSI.equals(strValue))
		{
			// エラーログ出力:%1%に許容されない値が含まれています。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1840TW,new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.TRAN_DIV") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E004;
			return false;
		}
		
		// 請求契約番号項目チェック
		strValue = (String)rsMap.get("SEIKY_KEI_NO");
		// 指定有無チェック
		// 請求契約番号 = 空の場合
		if(JACStrConst.SEIKY_KEI_NO_NON_SET.equals(strValue))
		{
			// エラーログ出力:%1%の指定がありません。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1820TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.SEIKY_KEI_NO") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E005;
			return false;
		}
		
		// 桁数チェック
		// 請求契約番号の桁数≠10の場合
		if(strValue.length() != 10)
		{
			// エラーログ出力:%1%の指定が誤っています。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1830TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.SEIKY_KEI_NO") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E006;
			return false;
		}
		
		// 属性チェック
		// 請求契約番号の属性≠半角数字１の場合
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakusuuji1"}))
		{
			// エラーログ出力:%1%に許容されない値が含まれています。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1840TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.SEIKY_KEI_NO") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E007;
			return false;
		}
		
		// 請求抑止コードチェック
		strValue = (String)rsMap.get("SEIKY_YOKSI_CD");
		// 指定有無チェック
		// 請求抑止コード = 空の場合
		if(JACStrConst.SEIKY_YOKSI_CD_NON_SET.equals(strValue))
		{
			// エラーログ出力:%1%の指定がありません。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1820TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.SEIKY_YOKSI_CD") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E009;
			return false;
		}
		
		// 桁数チェック
		// 請求抑止コードの桁数≠2の場合
		if(strValue.length() != 2)
		{
			// エラーログ出力:%1%の指定が誤っています。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1830TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.SEIKY_YOKSI_CD") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E010;
			return false;
		}
		
		// 属性チェック
		// 請求抑止コードの属性≠半角数字１の場合
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakusuuji1"}))
		{
			// エラーログ出力:%1%に許容されない値が含まれています。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1840TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.SEIKY_YOKSI_CD") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E011;
			return false;
		}
		
		// 対応履歴連動対象フラグ
		strValue = (String)rsMap.get("TAIORRKI_RENDO_TG_FLG");
		// 指定有無チェック
		// 対応履歴連動対象フラグ = 空の場合
		if(JACStrConst.TAIORRKI_RENDO_TG_FLG_NON_SET.equals(strValue))
		{
			// エラーログ出力:%1%の指定がありません。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1820TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.TAIORRKI_RENDO_TG_FLG") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E013;
			return false;
		}
		
		// 桁数チェック
		// 対応履歴連動対象フラグ≠1の場合
		if(strValue.length() != 1)
		{
			// エラーログ出力:%1%の指定が誤っています。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1830TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.TAIORRKI_RENDO_TG_FLG") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E014;
			return false;
		}
		
		// 属性チェック
		// 対応履歴連動対象フラグの属性≠半角数字１の場合
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakusuuji1"}))
		{
			// エラーログ出力:%1%に許容されない値が含まれています。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1840TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.TAIORRKI_RENDO_TG_FLG") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E015;
			return false;
		}
		
		// 規定値チェック
		// 対応履歴連動対象フラグ≠"0"かつ対応履歴連動対象フラグ≠"1"
		if(!JACStrConst.TAIORRKI_RENDO_TG_FLG_OFF.equals(strValue) && !JACStrConst.TAIORRKI_RENDO_TG_FLG_ON.equals(strValue))
		{
			// エラーログ出力:%1%に許容されない値が含まれています。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1840TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.TAIORRKI_RENDO_TG_FLG") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E016;
			return false;
		}
		
		// 記事項目チェック
		strValue = (String)rsMap.get("KIJI");
		int kijiLength = JACbatRknBusinessUtil.getBytes(strValue,this.encode);
		// 桁数チェック
		// 記事のバイト数＞200の場合
		if(kijiLength > 200)
		{
			// エラーログ出力:%1%に指定された文字数は登録できません。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1850TW, new String[] { (String)itemvalueMap.get("TXT-CHIFM357-INF1.KIJI") });
			this.tmpErrCd = JACStrConst.SEIKY_YOKSI_E017;
			return false;
		}

		return true;
	}

	/**
	 * SQLKEY(CH_SELECT_019)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SEIKY_KEI_KK_SELECT_019(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SEIKY_KEI.selectBySqlDefine(paramList, KK_T_SEIKY_KEI_KK_SELECT_019);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	DLYD_TRN_REQ_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeCC_T_DLYD_TRN_REQ_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("DLYD_TRN_REQ_NO", whereParam[0]);

		// DBアクセスを実行します
		return db_CC_T_DLYD_TRN_REQ.selectByPrimaryKeys(whereMap);
	}

	/**
	 * SQLKEY(CH_SELECT_005)で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_CD_NM_KANRI_CH_SELECT_005(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_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_CH_SELECT_005);
	}

	/**
	 * SQLKEY(CH_SELECT_006)で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_CD_NM_KANRI_CH_SELECT_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_CH_SELECT_006);
	}
	/**
	 * SQLKEY(CH_SELECT_012)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SEIKY_YOKSI_CH_SELECT_012(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		// DBアクセスを実行します
		db_KK_T_SEIKY_YOKSI.selectBySqlDefine(paramList, KK_T_SEIKY_YOKSI_CH_SELECT_012);
	}

	/**
	 * SQLKEY(CH_INSERT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求契約番号
	 *		 	請求抑止コード
	 *		 	請求抑止フラグ
	 *		 	請求抑止年月日
	 *		 	登録年月日時分秒
	 *		 	登録オペレータアカウント
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	無効フラグ
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SEIKY_YOKSI_CH_INSERT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());

		// DBアクセスを実行します
		db_KK_T_SEIKY_YOKSI.executeBySqlDefine(paramList, KK_T_SEIKY_YOKSI_CH_INSERT_001);
	}

	/**
	 * SQLKEY(CH_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求抑止．請求抑止年月日
	 *			更新オペレータアカウント
	 *			請求抑止．請求契約番号
	 *		 	請求抑止．請求抑止コード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SEIKY_YOKSI_CH_UPDATE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		// DBアクセスを実行します
		db_KK_T_SEIKY_YOKSI.executeBySqlDefine(paramList, KK_T_SEIKY_YOKSI_CH_UPDATE_001);
	}
	
	/**
	 * SQLKEY(CH_UPDATE_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 executeKK_T_SEIKY_YOKSI_CH_UPDATE_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_KK_T_SEIKY_YOKSI.executeBySqlDefine(paramList, KK_T_SEIKY_YOKSI_CH_UPDATE_002);
	}
	
	/**
	 * 請求抑止マップ（請求抑止コード：料金対応記録種別詳細）を返却する。
	 * <br>
	 * @return 請求抑止マップ
	 * @throws Exception 例外が発生した場合
	 */
	private HashMap<String, Object> getYoksiMap()
	{
		HashMap<String, Object> yoksiMap = new HashMap<String, Object>();

		// 請求抑止コード（請求書等発行抑止）： 料金対応記録種別詳細（請求書等発行抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SKS_YOKSI, JACStrConst.TKRK_SBTD_YKSI_SKS);
		// 請求抑止コード（請求書等内訳発行抑止）： 料金対応記録種別詳細（請求書等内訳発行抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SEIKYUS_TOU, JACStrConst.TKRK_SBTD_YKSI_SKSUW);
		// 請求抑止コード（口座番号発行抑止）： 料金対応記録種別詳細（口座番号表示抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KOZANO_YOKSI, JACStrConst.TKRK_SBTD_YKSI_KOZA);
		// 請求抑止コード（合算請求抑止）： 料金対応記録種別詳細（合算請求抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_GSN_SEIKY, JACStrConst.TKRK_SBTD_YKSI_GSN_SEIKY);
		// 請求抑止コード（ＷＥＢ請求情報公開要否）： 料金対応記録種別詳細（ＷＥＢ公開抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_WEB, JACStrConst.TKRK_SBTD_YKSI_WEB);
		// 請求抑止コード（請求書発行手数料抑止(課金)）： 料金対応記録種別詳細（請求書発行手数料抑止（課金））
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_HAK_CMS_YOKSI, JACStrConst.TKRK_SBTD_YKSI_SKS_CMS);
		// 請求抑止コード（強制窓口抑止）： 料金対応記録種別詳細（強制窓口抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KYOSEI_MDGC, JACStrConst.TKRK_SBTD_YKSI_KYOSEI_MDGC);
		// 請求抑止コード（督促抑止）： 料金対応記録種別詳細（督促抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_TKSK, JACStrConst.TKRK_SBTD_YKSI_TOKUSOKU);
		// 請求抑止コード（債権回収委託抑止）： 料金対応記録種別詳細（債権回収委託抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SKN_ITK, JACStrConst.TKRK_SBTD_YKSI_SKNKSITK);
		// 請求抑止コード（加入者情報交換抑止）： 料金対応記録種別詳細（加入者情報交換抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KNYSHA_INFO_KOKAN, JACStrConst.TKRK_SBTD_YKSI_KNYSHA);
		// 請求抑止コード（督促メール抑止）： 料金対応記録種別詳細（督促メール抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_TKSK_MAIL, JACStrConst.TKRK_SBTD_YKSI_TOKUSOKU_ML);
		// 請求抑止コード（請求書ハガキ化抑止）： 料金対応記録種別詳細（請求書ハガキ化抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SKS_HAGAKI, JACStrConst.TKRK_SBTD_YKSI_SKS_HAGAKI);
		// 請求抑止コード（隔月請求抑止）： 料金対応記録種別詳細（隔月請求抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KAKGT_SEIKY_SKIP, JACStrConst.TKRK_SBTD_YKSI_KAKGT_SKIP);
		// 請求抑止コード（企業負担抑止）： 料金対応記録種別詳細（振込手数料企業請求抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KI_FTN, JACStrConst.TKRK_SBTD_YKSI_KIFTN);
		// 請求抑止コード（顧客負担抑止）： 料金対応記録種別詳細（振込手数料顧客請求抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KO_FTN, JACStrConst.TKRK_SBTD_YKSI_KOFTN);
		
		return yoksiMap;
	}
	
	
	/**
	 * 請求抑止解除マップ（請求抑止コード：料金対応記録種別詳細）を返却する。
	 * <br>
	 * @return 請求抑止解除マップ
	 * @throws Exception 例外が発生した場合
	 */
	private HashMap<String, Object> getYoksiRlsMap()
	{
		HashMap<String, Object> yoksiMap = new HashMap<String, Object>();

		// 請求抑止コード（請求書等発行抑止）： 料金対応記録種別詳細（請求書等発行抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SKS_YOKSI, JACStrConst.TKRK_SBTD_YKSCL_SKS);
		// 請求抑止コード（請求書等内訳発行抑止）： 料金対応記録種別詳細（請求書等内訳発行抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SEIKYUS_TOU, JACStrConst.TKRK_SBTD_YKSCL_SKSUW);
		// 請求抑止コード（口座番号発行抑止）： 料金対応記録種別詳細（口座番号表示抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KOZANO_YOKSI, JACStrConst.TKRK_SBTD_YKSCL_KOZA);
		// 請求抑止コード（合算請求抑止）： 料金対応記録種別詳細（合算請求抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_GSN_SEIKY, JACStrConst.TKRK_SBTD_YKSCL_GSN_SEIKY);
		// 請求抑止コード（ＷＥＢ請求情報公開要否）： 料金対応記録種別詳細（ＷＥＢ公開抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_WEB, JACStrConst.TKRK_SBTD_YKSCL_WEB);
		// 請求抑止コード（請求書発行手数料抑止(課金)）： 料金対応記録種別詳細（請求書発行手数料抑止（課金）解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_HAK_CMS_YOKSI, JACStrConst.TKRK_SBTD_YKSCL_SKS_CMS);
		// 請求抑止コード（強制窓口抑止）： 料金対応記録種別詳細（強制窓口抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KYOSEI_MDGC, JACStrConst.TKRK_SBTD_YKSCL_KYOSEI_MDGC);
		// 請求抑止コード（督促抑止）： 料金対応記録種別詳細（督促抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_TKSK, JACStrConst.TKRK_SBTD_YKSCL_TOKUSOKU);
		// 請求抑止コード（債権回収委託抑止）： 料金対応記録種別詳細（債権回収委託抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SKN_ITK, JACStrConst.TKRK_SBTD_YKSCL_SKNKSITK);
		// 請求抑止コード（加入者情報交換抑止）： 料金対応記録種別詳細（加入者情報交換抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KNYSHA_INFO_KOKAN, JACStrConst.TKRK_SBTD_YKSCL_KNYSHA);
		// 請求抑止コード（督促メール抑止）： 料金対応記録種別詳細（督促メール抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_TKSK_MAIL, JACStrConst.TKRK_SBTD_YKSCL_TOKUSOKU_ML);
		// 請求抑止コード（請求書ハガキ化抑止）： 料金対応記録種別詳細（請求書ハガキ化抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SKS_HAGAKI, JACStrConst.TKRK_SBTD_YKSCL_SKS_HAGAKI);
		// 請求抑止コード（隔月請求抑止）： 料金対応記録種別詳細（隔月請求抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KAKGT_SEIKY_SKIP, JACStrConst.TKRK_SBTD_YKSCL_KAKGT_SKIP);
		// 請求抑止コード（企業負担抑止）： 料金対応記録種別詳細（振込手数料企業負担抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KI_FTN, JACStrConst.TKRK_SBTD_YKSCL_KIFTN);
		// 請求抑止コード（顧客負担抑止）： 料金対応記録種別詳細（振込手数料顧客負担抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KO_FTN, JACStrConst.TKRK_SBTD_YKSCL_KOFTN);
		return yoksiMap;
	}

	/**
	 * ヘッダを作成します。
	 * 
	 * @param mastMap 入力M情報
	 * @return JBSbatServiceInterfaceMap 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap makeHeader(JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		JBSbatServiceInterfaceMap headInf = new JBSbatServiceInterfaceMap();
		
		headInf.set(JBSbatCHIFM358.IKT_ADD_ERR_CD,	                   	"一括登録エラーコード");			// 一括登録エラーコード
		headInf.set(JBSbatCHIFM358.ERR_NYO,			                              "エラー内容");			// エラー内容
		headInf.set(JBSbatCHIFM358.SEIKY_YOKSI_CD_NM,                 "請求抑止コード区分名称");			// 請求抑止コード区分名称
		headInf.set(JBSbatCHIFM358.TRAN_DIV,	                                    "処理区分");			// 請求抑止一括登録指示ファイル.処理区分
		headInf.set(JBSbatCHIFM358.SEIKY_KEI_NO,	                            "請求契約番号");			// 請求抑止一括登録指示ファイル.請求契約番号
		headInf.set(JBSbatCHIFM358.SEIKY_YOKSI_CD,	                          "請求抑止コード");			// 請求抑止一括登録指示ファイル.請求抑止コード
		headInf.set(JBSbatCHIFM358.TAIORRKI_RENDO_TG_FLG,             "対応履歴連動対象フラグ");			// 請求抑止一括登録指示ファイル.対応履歴連動対象フラグ
		headInf.set(JBSbatCHIFM358.KIJI,   	                                            "記事");			// 請求抑止一括登録指示ファイル.記事
		headInf.setOutFlg(true);
		
		return headInf;
	}
	
	/**
	 * 料金対応記録(請求抑止解除要)を登録します。
	 * 
	 * @param mastMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void insertPrcTaiokrkYoksi(HashMap<String, String> yoksiInfoMap,JBSbatServiceInterfaceMap mastMap) throws Exception
	{

		// 料金対応記録種別詳細コード
		String prcTioKrkSbtDtlCd = null;
		
		// 請求抑止コード
		if (JACStrConst.SEIKY_YOKSI_CD_KI_FTN.equals(mastMap.get(JBSbatCHIFM357.SEIKY_YOKSI_CD)))
		{
			seikyYoksiCd = JACStrConst.SEIKY_YOKSI_CD_KO_FTN;
		}
		else if (JACStrConst.SEIKY_YOKSI_CD_KO_FTN.equals(mastMap.get(JBSbatCHIFM357.SEIKY_YOKSI_CD)))
		{
			seikyYoksiCd = JACStrConst.SEIKY_YOKSI_CD_KI_FTN;
		}
		// 対応履歴連動対象フラグ
		String taiorrkiRendoTgFlg = mastMap.getString(JBSbatCHIFM357.TAIORRKI_RENDO_TG_FLG);
		// 料金対応記録種別コード
		String prcTioKrkSbtCd = JACStrConst.TKRK_SBT_SEIKY_YOKSI_IKT_ADD_RLS;
		
		// 請求抑止解除マップ形成
		HashMap<String, Object> yoksiRlsMap = this.getYoksiRlsMap();
		
		// ◇請求抑止解除
		// 料金対応記録種別詳細コード（請求抑止情報に紐付くコード）
		prcTioKrkSbtDtlCd =(String)yoksiRlsMap.get(seikyYoksiCd);

		// 料金対応記録登録データの設定
		JBSbatServiceInterfaceMap prcTaioInMap = new JBSbatServiceInterfaceMap();
		
		// 01.請求契約番号
		prcTaioInMap.setString(JBSbatCHIFM096.SEIKY_KEI_NO, 				mastMap.get(JBSbatCHIFM357.SEIKY_KEI_NO));
		// 02.サービス契約番号
		prcTaioInMap.setString(JBSbatCHIFM096.SVC_KEI_NO, 					null);
		// 03.対応年月日時分秒
		prcTaioInMap.setString(JBSbatCHIFM096.TAIO_DTM, 					super.opeDate.concat(JCCBatCommon.getSysDateTimeStamp().substring(8)));
		// 04.料金対応記録種別コード
		prcTaioInMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_CD, 		prcTioKrkSbtCd);
		// 05.料金対応記録種別詳細コード
		prcTaioInMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_DTL_CD, 	prcTioKrkSbtDtlCd);
		// 06.記録対象年月
		prcTaioInMap.setString(JBSbatCHIFM096.KIROK_TG_YM, 					null);
		// 07.督促番号
		prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_NO, 					null);
		// 08.督促異動番号
		prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_IDO_NO, 				null);
		// 09.請求番号
		prcTaioInMap.setString(JBSbatCHIFM096.SEIKY_NO,						null);
		// 10.金庫番号
		prcTaioInMap.setString(JBSbatCHIFM096.KNK_NO, 						null);
		// 11.債権番号
		prcTaioInMap.setString(JBSbatCHIFM096.SAIKEN_NO, 					null);
		// 12.入金番号
		prcTaioInMap.setString(JBSbatCHIFM096.NYUKIN_NO, 					null);
		// 13.電子ファイル管理番号
		prcTaioInMap.setString(JBSbatCHIFM096.EFILE_KANRI_NO, 				null);
		// 14.対応履歴連動対象フラグ
		prcTaioInMap.setString(JBSbatCHIFM096.TAIORRKI_RENDO_TG_FLG, 		taiorrkiRendoTgFlg);
		// 15.変更前金額
		prcTaioInMap.setString(JBSbatCHIFM096.AMNT_CHBF, 					null);
		// 16.変更後金額
		prcTaioInMap.setString(JBSbatCHIFM096.AMNT_CHAF, 					null);
		// 17.変更前督促ステータス
		prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHBF, 			null);
		// 18.変更後督促ステータス
		prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHAF, 			null);
		// 19.変更前金庫料金項目コード
		prcTaioInMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHBF, 			null);
		// 20.変更後金庫料金項目コード
		prcTaioInMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHAF, 			null);
		// 21.督促メールパターン
		prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_ML_PTN_CD, 			null);
		// 22.変更前補償費扱いフラグ
		prcTaioInMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHBF, 		null);
		// 23.変更後補償費扱いフラグ
		prcTaioInMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHAF, 		null);
		// 24.記事
		prcTaioInMap.setString(JBSbatCHIFM096.KIJI, 						mastMap.get(JBSbatCHIFM357.KIJI));
		
		// 料金対応記録登録を実行
		jCHbatPrcTaiokrkAdd.prcTaiokrkAdd(prcTaioInMap);

		return;
	}

}
