/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSBatACTelnoGuideUseChrgInfoTrkmSvcUcwkHuka
*	ソースファイル名	：JBSBatACTelnoGuideUseChrgInfoTrkmSvcUcwkHuka.java
*	作成者				：富士通　
*   日付                ：2024年05月17日
*＜機能概要＞
*　電話番号案内利用課金情報取込サービス内訳情報付加部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*  v71.00.00   2024/05/17  FJ)吉田賢	【ANK-4497-00-00】電話番号案内の課金情報連携変更対応
*  v71.00.00   2024/07/02  FJ)上島      【IT1-2024-0000017】電話番号案内の課金情報連携変更対応
*  v72.00.00   2024/11/19  FJ)謝        【#85914】電話番号案内料金課金で出力された外部料金エラーリストのフォーマットが正しくない
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatSchdlUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.common.JCHbatSeikyKaknoBusinessUtil;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatACIFM015;
import eo.business.util.file.JBSbatACIFM372;
import eo.business.util.file.JBSbatACIFM373;
import eo.business.util.file.JBSbatACIFM374;
import eo.business.util.table.JBSbatAC_M_JURYOPRC;
import eo.business.util.table.JBSbatCH_M_PRC_KMK_CS_CHGE;
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.common.util.JKKStringUtil;
import eo.common.util.JPCUtilCommon;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
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.JBSbatDateUtil;

/**
* 電話番号案内利用課金情報取込サービス内訳情報付加 <p>
*<BR>
* @author 富士通
*/
public class JBSbatACTelnoGuideUseChrgInfoTrkmSvcHuka extends JBSbatBusinessService implements JBSbatMatchServiceInterface
{
	// ==========================
	// =====テーブル定義情報=====
	// ==========================
	/** テーブル(従量料金)*/
	private static final String D_TBL_NAME_AC_M_JURYOPRC = "AC_M_JURYOPRC";
	/** テーブル(料金項目抽出変換)*/
	private static final String D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE = "CH_M_PRC_KMK_CS_CHGE";
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";
	// 2024/07/02 IT1-2024-0000017 上島 ADD START
	/** テーブル（ディレイド処理依頼）*/
	private final String D_TBL_NAME_CC_T_DLYD_TRN_REQ = "CC_T_DLYD_TRN_REQ";
	// 2024/07/02 IT1-2024-0000017 上島 ADD END
	
	// ==========================
	// =====テーブル定義情報=====
	// ==========================
	/** SQL定義キー(AC_SELECT_005)*/
	private static final String AC_M_JURYOPRC_AC_SELECT_005 = "AC_SELECT_005";
	/** SQL定義キー(AC_SELECT_031)*/
	private static final String CH_M_PRC_KMK_CS_CHGE_AC_SELECT_031 = "AC_SELECT_031";
	/** SQL定義キー(AC_SELECT_001)*/
	private static final String ZM_M_CD_NM_KANRI_AC_SELECT_001 = "AC_SELECT_001";
	// 2024/07/02 IT1-2024-0000017 上島 ADD START
	/** SQL定義キー(AC_SELECT_002)*/
	private static final String CC_T_DLYD_TRN_REQ_AC_SELECT_002 = "AC_SELECT_002";
	// 2024/07/02 IT1-2024-0000017 上島 ADD END
	
	// ========================================
	// =====テーブルアクセスクラス定義情報=====
	// ========================================
	/** テーブルアクセスクラス(従量料金)*/
	private JBSbatSQLAccess db_AC_M_JURYOPRC = null;
	/** テーブルアクセスクラス(料金項目抽出変換)*/
	private JBSbatSQLAccess db_CH_M_PRC_KMK_CS_CHGE = null;
	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	// 2024/07/02 IT1-2024-0000017 上島 ADD START
	/** テーブルアクセスクラス(ディレイド処理依頼)*/
	private JBSbatSQLAccess db_CC_T_DLYD_TRN_REQ = null;
	// 2024/07/02 IT1-2024-0000017 上島 ADD END
	
	// ==============================
	// =====エラーメッセージ情報=====
	// ==============================
	/** エラーメッセージ（請求先適用期間外） */
	private final String ERRMSG_SEIKY_KEI_APLY_ERR = "請求先適用期間外エラー";
	
	// ================================
	// =====業務パラメータＩＤ情報=====
	// ================================
	/** 業務パラメータＩＤ（電話番号案内課金(抽出)） */
	private final String WORK_PARAM_ID_AC_WKS_TNGUI_CHRG = "AC_WKS_TNGUI_CHRG";
	/** 業務パラメータＩＤ（電話番号案内課金(変換)） */
	private final String WORK_PARAM_ID_AC_WKS_OT_TLN_GUID_CRIF = "AC_WKS_OT_TNGUI_CRIF";
	/** 業務パラメータＩＤ（外部料金取込システム区分取得用） */
	private final String WORK_PARAM_ID_AC_OPS_TLN_GUIDE_CHRG = "AC_OPS_TNGUI_CHRG";
	/** 業務パラメータＩＤ（請求時期指定コード取得用） */
	private final String WORK_PARAM_ID_AC_SJC_SIKY_STI_MON = "AC_SJC_SIKY_STI_MON";

	// 2024/07/02 IT1-2024-0000017 上島 ADD START
	// ====================
	// =====その他定数=====
	// ====================
	/** 定数：データソースのアップロードを処理依頼しているJobID */
	private final String FILE_UPLOAD_DLY_JOBID = "EO31U0110J0";
	// 2024/07/02 IT1-2024-0000017 上島 ADD END
	
	// ======================
	// =====共通変数情報=====
	// ======================
	/** 課金単価情報Map（key:料金コースコード/料金サービスコード/料金項目コード） */
	private HashMap<String, Object> prcIcrn = new HashMap<String, Object>();
	/** 外部料金取込用料金項目情報（key:料金グループコード/料金コースコード/料金サービスコード/年月） */
	private HashMap<String, Object> outputPrcKmkCdMap = new HashMap<String, Object>();
	/** 退避．月末日 */
	private String useEndYmd = JACStrConst.KARA_MOJI;
	/** 外部料金取込システム区分 */
	private String outPrcSysDiv = JACStrConst.KARA_MOJI;
	/** 外部料金取込システム区分名 */
	private String outPrcSysDivNm = JACStrConst.KARA_MOJI;
	/** 請求時期指定コード */
	private String tonyuKbn = JACStrConst.KARA_MOJI;
	/** 請求時期指定コード名 */
	private String tonyuKbnNm = JACStrConst.KARA_MOJI;
	/** 退避．トランレコードキー情報(月末カレント) */
	private String curentTranKey = JACStrConst.KARA_MOJI;
	/** 退避．トランレコード料金グループコード(月末カレント)出力用 */
	private String curentTranPrcGrpCd = JACStrConst.KARA_MOJI;
	/** 退避．トランレコード料金コースコード(月末カレント)出力用 */
	private String curentTranPcrsCd = JACStrConst.KARA_MOJI;
	/** 退避．トランレコード料金サービスコード(月末カレント)出力用 */
	private String curentTranPrcSvcCd = JACStrConst.KARA_MOJI;
	/** 退避．トランマップ */
	private JBSbatServiceInterfaceMap taihiTranMap = new JBSbatServiceInterfaceMap();
	// 2024/07/02 IT1-2024-0000017 上島 ADD START
	/** 当月ファイルアップロード有無フラグ*/
	private boolean fileUploadFlg = true;
	/** フリー項目 */
	private String[] freeItems = null;
	private JBSbatOutputFileUtil cntFile = null;
	// 2024/07/02 IT1-2024-0000017 上島 ADD END
	
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** キーマッチ処理フラグ*/
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ*/
	private boolean mastProcFlg;

	/** トランファイル処理フラグ*/
	private boolean tranProcFlg;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	// 2024/07/02 IT1-2024-0000017 上島 DEL START
	//// ログ出力用ファイル名
	///** マスタファイル名 */ 
	//private static final String MAST_FILE_NAME = "電話番号案内利用課金情報取込データファイル";
	//
	///** トランファイル名 */
	//private static final String TRAN_FILE_NAME = "サービス契約インターフェース";
	// 2024/07/02 IT1-2024-0000017 上島 DEL END
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// DBアクセスクラスを生成します
		db_AC_M_JURYOPRC = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_M_JURYOPRC);
		db_CH_M_PRC_KMK_CS_CHGE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		// 2024/07/02 IT1-2024-0000017 上島 ADD START
		db_CC_T_DLYD_TRN_REQ = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_DLYD_TRN_REQ);
		// 2024/07/02 IT1-2024-0000017 上島 ADD END
		
		// 従量料金情報取得
		String workSkbtCd_AC_WKS_TNGUI_CHRG = JKKBatCommon.getWorkParamSetteValue(super.commonItem, WORK_PARAM_ID_AC_WKS_TNGUI_CHRG);
		getJuryoPrc(workSkbtCd_AC_WKS_TNGUI_CHRG, prcIcrn);
		
		// 外部料金取込用
		String workSkbtCd_AC_WKS_OT_TLN_GUID_CRIF = JKKBatCommon.getWorkParamSetteValue(super.commonItem, WORK_PARAM_ID_AC_WKS_OT_TLN_GUID_CRIF);
		getPrkKmkCsChge(workSkbtCd_AC_WKS_TNGUI_CHRG, workSkbtCd_AC_WKS_OT_TLN_GUID_CRIF, outputPrcKmkCdMap);
		
		// 外部料金取込システム区分取得（業務パラメータ管理から取得）
		outPrcSysDiv = JKKBatCommon.getWorkParamSetteValue(super.commonItem, WORK_PARAM_ID_AC_OPS_TLN_GUIDE_CHRG);
		outPrcSysDivNm = getCdNmKanri(JZM0171Constant.CD00888, outPrcSysDiv)[0];
		
		// 請求時期指定コード取得（業務パラメータ管理から取得）
		tonyuKbn = JKKBatCommon.getWorkParamSetteValue(super.commonItem, WORK_PARAM_ID_AC_SJC_SIKY_STI_MON);
		tonyuKbnNm = getCdNmKanri(JZM0171Constant.CD00972, tonyuKbn)[0];
		
		// 課金するサービスの状態の基準日（請求月月末）
		// 料金スケジュール定義アクセス部品初期処理
		JACbatSchdlUtil schdlUtil = new JACbatSchdlUtil(commonItem);
		
		// 2024/07/02 IT1-2024-0000017 上島 ADD START
		// フリー項目を取得
		String StrFree = commonItem.getFreeItem();
		freeItems = StrFree.split(JACStrConst.FREE_DIV);
		//料金計算日
		String strZenPrcCalcDay = "";
		String strToPrcCalcDay = "";
		// 2024/07/02 IT1-2024-0000017 上島 ADD END
		try
		{
			// 請求年月（当月）を取得する
			String seikyYm = schdlUtil.getBillDate(super.opeDate, JACStrConst.EVENT_CD_RYOKIN_KEISAN_YMD);
			
			// 請求年月（当月）から、利用開始終了日取得
			String[] strEndYmd = schdlUtil.getUseStrEnd(seikyYm, JACStrConst.EVENT_CD_USE_STAYMD, JACStrConst.EVENT_CD_USE_ENDYMD);
			
			useEndYmd = strEndYmd[1];	// 利用終了日
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][利用終了日：" + useEndYmd + "]");
			
			// 2024/07/02 IT1-2024-0000017 上島 ADD START
			// 請求年月（当月）より料金計算日取得
			strToPrcCalcDay = schdlUtil.getUseStrEnd(seikyYm, JACStrConst.EVENT_CD_USE_STAYMD, JACStrConst.EVENT_CD_PRC_CALC_DAY)[1];
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][請求年月（当月）料金計算日：" + strToPrcCalcDay + "]");
			
			// 請求年月（前月）を取得する
			//String zenSeikyYm = schdlUtil.getBillDate(JBSbatDateUtil.adjustMonth(super.opeDate, -1).substring(0, 6) + "01", JACStrConst.EVENT_CD_RYOKIN_KEISAN_YMD);
			String zenSeikyYm = JBSbatDateUtil.adjustMonth(seikyYm + "01", -1).substring(0, 6);
			// 請求年月（当月）より料金計算日取得
			strZenPrcCalcDay = schdlUtil.getUseStrEnd(zenSeikyYm, JACStrConst.EVENT_CD_USE_STAYMD, JACStrConst.EVENT_CD_PRC_CALC_DAY)[1];
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][請求年月（前月）料金計算日：" + strZenPrcCalcDay + "]");
			// 2024/07/02 IT1-2024-0000017 上島 ADD END
		}
		finally
		{
			// 料金スケジュール定義アクセス部品クローズ
			schdlUtil.close();
		}
		// 2024/07/02 IT1-2024-0000017 上島 ADD START
		//ディレイド処理依頼が期間内に存在しない場合には処理続行せずに終了（バッチ呼び出し元のシェルにて警告ログの出力）
		// バイント変数のリストを生成します
		// 対象キーの設定
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue(FILE_UPLOAD_DLY_JOBID); //ディレイド処理を依頼すJOB
		whereMap.setValue(strZenPrcCalcDay); //前月の料金計算日
		whereMap.setValue(strToPrcCalcDay); //当月の料金計算日
		
		// DBアクセスを実行します
		int count = countCC_T_DLYD_TRN_REQ_AC_SELECT_002(whereMap);
		// レコード件数が0件だった場合
		if (0 == count){
			//後続処理せずに終了させたいためフラグを設定
			fileUploadFlg = false;
			
			//当月にファイルアップロードが存在しなかった場合の警告用フラグファイルを作成するための処理
			// フリー項目から取得
			String outputFilePath = freeItems[0];
			//出力
			cntFile = new JBSbatOutputFileUtil( outputFilePath );
			cntFile.setEncode(JKKBatConst.SJIS);
			cntFile.setLine(JKKBatConst.S_LINE_SEPARAOR_LF);
			cntFile.createWriter();
			StringBuffer sb = new StringBuffer();
			sb.append(strZenPrcCalcDay + JACStrConst.SLASH + strToPrcCalcDay);
			cntFile.write(sb.toString());
		}
		// 2024/07/02 IT1-2024-0000017 上島 ADD END
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial][opeDate=" + super.opeDate + "]");

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param mastMap　入力電文
	 * @param tranMap　入力電文
	 * @param outputItem  入力情報
	 * @return JBSbatOutputItem 出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap, JBSbatOutputItem outputItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert mastMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][mastMap=" + mastMap.getMap().toString() + "]") : true;
		assert tranMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][tranMap=" + tranMap.getMap().toString() + "]") : true;
		// 2024/07/02 IT1-2024-0000017 上島 ADD START
		//初期処理にて当月ファイルアップロードが無いと判定した場合
		if(!fileUploadFlg){
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][当月ファイルアップロードの有無判定：" + fileUploadFlg + "]");
			if(mastMap != null){
				this.setMastProcFlg(true);
			}
			if(tranMap != null){
				this.setTranProcFlg(true);
			}
			return outputItem;
		}
		// 2024/07/02 IT1-2024-0000017 上島 ADD END
		// 入力Ｍのみ存在する
		if (mastMap != null && tranMap == null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍのみ存在する]");
			
			String mastKey = mastMap.getString(JBSbatACIFM372.SVC_KEI_NO);
			
			// キー不一致時処理を行う
			procOutputKeyNoMatch(mastMap, tranMap, outputItem);
			
			// マスタ処理フラグ→true
			this.setMastProcFlg(true);
			
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][mastKey = " + mastKey + "]");
			
		}
		// 入力Ｔのみ存在する
		else if (mastMap == null && tranMap != null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｔのみ存在する]");
			
			// トラン処理フラグ→true
			this.setTranProcFlg(true);
			
			String tranKey = tranMap.getString(JBSbatACIFM373.SVC_KEI_NO);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][tranKey = " + tranKey + "]");
		}
		// 入力Ｍ、入力Ｔともに存在する
		else
		{
			String mastKey = mastMap.getString(JBSbatACIFM372.SVC_KEI_NO);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][mastKey = " + mastKey + "]");
			
			String tranKey = tranMap.getString(JBSbatACIFM373.SVC_KEI_NO);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][tranKey = " + tranKey + "]");
			
			
			// 入力Ｍ＝入力Ｔ（マッチ）
			if (mastKey.compareTo(tranKey) == 0)
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍ、入力Ｔともに存在する][入力Ｍ＝入力Ｔ（マッチ）]");
				
				// マスタ．発側終了日
				String hashinEndYmd = mastMap.getString(JBSbatACIFM372.HASHIN_END_YMD);
				// トラン．サービス開始日
				String svcStaYmd = tranMap.getString(JBSbatACIFM373.SVC_STA_YMD);
				// トラン．課金開始日
				String chrgStaYmd = tranMap.getString(JBSbatACIFM373.CHRG_STA_YMD);
				// トラン．課金終了日
				String chrgEndYmd = tranMap.getString(JBSbatACIFM373.CHRG_END_YMD);
				
				// カレント情報の取得
				if(JPCUtilCommon.isPastDate(chrgStaYmd, useEndYmd, "1") && JPCUtilCommon.isFutureDate(chrgEndYmd, useEndYmd, "1"))
				{
					curentTranKey = mastKey;
					curentTranPrcGrpCd = tranMap.getString(JBSbatACIFM373.PRC_GRP_CD);
					curentTranPcrsCd   = tranMap.getString(JBSbatACIFM373.PCRS_CD);
					curentTranPrcSvcCd = tranMap.getString(JBSbatACIFM373.PRC_SVC_CD);
				}
				// もしくはサービスが開始していれば取得する。(退避情報がない場合のみ)
				else 
				{
					// 最初のレコードのみ設定する
					if(!mastKey.equals(curentTranKey))
					{
						curentTranKey = mastKey;
						curentTranPrcGrpCd = tranMap.getString(JBSbatACIFM373.PRC_GRP_CD);
						curentTranPcrsCd   = tranMap.getString(JBSbatACIFM373.PCRS_CD);
						curentTranPrcSvcCd = tranMap.getString(JBSbatACIFM373.PRC_SVC_CD);
					}
				}
				
				// マッチング処理
				procMatching(mastMap, tranMap, outputItem);
			}
			// 入力Ｍ＜入力Ｔ
			else if (mastKey.compareTo(tranKey) < 0)
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍ、入力Ｔともに存在する][入力Ｍ＜入力Ｔ]");
				
				// キー不一致時処理を行う
				procOutputKeyNoMatch(mastMap, tranMap, outputItem);
				
				// マスタ処理フラグ→true
				this.setMastProcFlg(true);
			}
			// 入力Ｍ＞入力Ｔ
			else
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍ、入力Ｔともに存在する][入力Ｍ＞入力Ｔ]");
				
				// トラン処理フラグ→true
				this.setTranProcFlg(true);
			}
		}
		
		assert outputItem != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute][outputInItem=" + outputItem.getOutMapList().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * キー不一致時出力処理
	 * キーが不一致の場合、既存情報から正常情報を出力するか
	 * エラー情報を出力します。
	 * ※本処理は、当該キーのトラン情報を読み切った後の判定にしか使用できません
	 * 
	 * @param mastMap　入力電文
	 * @param tranMap　入力電文
	 * @param outputItem  入力情報
	 * @throws Exception 
	 */
	private void procOutputKeyNoMatch(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap, JBSbatOutputItem outputItem) throws Exception
	{
		// 正常出力の可能性があることを考慮し、退避したトランMapから出力対象か判定する
		if(judgeSucsessOutput(mastMap))
		{
			// マスタ情報と退避したトラン情報で
			// 正常情報を出力する
			setOutputMapSucsess(mastMap, taihiTranMap, outputItem);
		}
		else
		{
			// エラー情報を出力する
			setOutputMapError(mastMap, taihiTranMap, outputItem, ERRMSG_SEIKY_KEI_APLY_ERR);
		}
	}
	
	/**
	 * 正常出力するかどうか判定します。
	 * ※本処理は、当該キーのトラン情報を読み切った後の判定にしか使用できません
	 * 
	 * @param mastMap
	 * @return
	 * @throws Exception 
	 */
	private boolean judgeSucsessOutput(JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		String mastKey = mastMap.getString(JBSbatACIFM372.SVC_KEI_NO);
		String tranKey = taihiTranMap.getString(JBSbatACIFM373.SVC_KEI_NO);
		
		// マスタ．発側終了日
		String hashinEndYmd = mastMap.getString(JBSbatACIFM372.HASHIN_END_YMD);
		// トラン．サービス開始日
		String svcStaYmd = taihiTranMap.getString(JBSbatACIFM373.SVC_STA_YMD);
		
		// キーが一致しない場合
		// 2024/07/02 IT1-2024-0000017 上島 MOD START
//		if(mastKey.compareTo(tranKey) != 0)
		if(mastKey.compareTo(JKKStringUtil.nullToBlank(tranKey)) != 0)
		// 2024/07/02 IT1-2024-0000017 上島 MOD END
		{
			return false;
		}
		// サービス開始していない場合
		// 発側終了日　＜　サービス開始日
		if(JPCUtilCommon.isPastDate(hashinEndYmd, svcStaYmd, "0"))
		{
			return false;
		}
		
		return true;
	}

	/**
	 * マッチング処理本体
	 * 
	 * @param mastMap
	 * @param tranMap
	 * @param outputItem
	 * @throws Exception
	 */
	private void procMatching(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap, JBSbatOutputItem outputItem) throws Exception
	{
		// マスタ．発側終了日
		String hashinEndYmd = mastMap.getString(JBSbatACIFM372.HASHIN_END_YMD);
		// トラン．サービス開始日
		String svcStaYmd = tranMap.getString(JBSbatACIFM373.SVC_STA_YMD);
		// トラン．課金開始日
		String chrgStaYmd = tranMap.getString(JBSbatACIFM373.CHRG_STA_YMD);
		// トラン．課金終了日
		String chrgEndYmd = tranMap.getString(JBSbatACIFM373.CHRG_END_YMD);
		
		// 課金終了日＜発側終了日の場合
		if(JPCUtilCommon.isFutureDate(hashinEndYmd, chrgEndYmd, "0"))
		{
			// トラン処理フラグ→true
			this.setTranProcFlg(true);
		}
		// 課金開始日　≦　発側終了日　≦　課金終了日の場合
		else if(JPCUtilCommon.isPastDate(chrgStaYmd, hashinEndYmd, "1") && JPCUtilCommon.isFutureDate(chrgEndYmd, hashinEndYmd, "1"))
		{
			// 正常情報を出力する
			setOutputMapSucsess(mastMap, tranMap, outputItem);
			// マスタ処理フラグ→true
			this.setMastProcFlg(true);
		}
		// サービス開始日　≦　発側終了日　＜　課金開始日
		else if(JPCUtilCommon.isPastDate(svcStaYmd, hashinEndYmd, "1") && JPCUtilCommon.isFutureDate(chrgStaYmd, hashinEndYmd, "0"))
		{
			// まだ課金開始〜終了に紐づくレコードが見つかる可能性があるため、
			// 一旦トランを進める
			// トラン処理フラグ→true
			this.setTranProcFlg(true);
			
			// 当該トラン情報がキーに紐づく最終のレコードである可能性もあるため、
			// トラン情報が切り替わるか読み切った場合に備えて
			// 当該トラン情報を退避する
			taihiTranMap = tranMap;
		}
		// サービス開始していない場合
		else
		{
			// エラー情報を出力する
			setOutputMapError(mastMap, tranMap, outputItem, ERRMSG_SEIKY_KEI_APLY_ERR);
			// マスタ処理フラグ→true
			this.setMastProcFlg(true);
		}
	}

	/**
	 * 正常データの出力データを作成します。
	 * 
	 * @param mastMap 入力電文
	 * @param tranMap 入力電文
	 * @param outputInItem  出力電文
	 * @param kagenSkbtCd 加減識別コード
	 * @throws Exception
	 */
	private void setOutputMapSucsess(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap, JBSbatOutputItem outputInItem) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputData]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputData][mastMap=" + mastMap.getMap().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputData][tranMap=" + tranMap.getMap().toString() + "]");

		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		String hashinEndYmd = mastMap.getString(JBSbatACIFM372.HASHIN_END_YMD);
		String prcGrpCd = tranMap.getString(JBSbatACIFM373.PRC_GRP_CD);
		String pcrsCd = tranMap.getString(JBSbatACIFM373.PCRS_CD);
		String prcSvcCd = tranMap.getString(JBSbatACIFM373.PRC_SVC_CD);
		// 料金項目コードは通話当時のサービス情報から取得する
		String prcKmkCd = getPrcKmkCd(prcGrpCd, pcrsCd, prcSvcCd, hashinEndYmd);
		// 課金単価は通話当時のサービス情報から取得する
		String chrgTanka = getChrgTanka(prcGrpCd, pcrsCd, prcSvcCd, hashinEndYmd);
		
		outMap.setString(JBSbatACIFM374.SVC_KEI_NO				, tranMap.getString(JBSbatACIFM373.SVC_KEI_NO));		// サービス契約番号
		outMap.setString(JBSbatACIFM374.SEIKY_KEI_NO			, tranMap.getString(JBSbatACIFM373.SEIKY_KEI_NO));		// 請求契約番号
		outMap.setString(JBSbatACIFM374.PRC_GRP_CD				, curentTranPrcGrpCd);									// 料金グループコード
		outMap.setString(JBSbatACIFM374.PCRS_CD					, curentTranPcrsCd);									// 料金コースコード
		outMap.setString(JBSbatACIFM374.PRC_SVC_CD				, curentTranPrcSvcCd);									// 料金サービスコード
		outMap.setString(JBSbatACIFM374.PRC_KMK_CD				, prcKmkCd);											// 料金項目コード
		outMap.setString(JBSbatACIFM374.CHRG_CNT				, mastMap.getString(JBSbatACIFM372.CHRG_CNT));			// 課金回数
		outMap.setString(JBSbatACIFM374.CHRG_TANKA				, chrgTanka);											// 課金単価
		
		outMap.setOutFlg(true);
		
		// 出力レコード作成
		outputInItem.addOutMapList(outMap);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputData][outputInItem=" + outputInItem.getOutMapList().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputData]");
	}
	
	/**
	 * エラー情報の出力データを作成します。
	 * 
	 * @param mastMap 入力電文
	 * @param tranMap 入力電文
	 * @param outputInItem  出力電文
	 * @param kagenSkbtCd 加減識別コード
	 * @throws Exception
	 */
	private void setOutputMapError(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap, JBSbatOutputItem outputInItem, String errMesssage) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputData]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputData][mastMap=" + mastMap.getMap().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputData][tranMap=" + tranMap.getMap().toString() + "]");
		
		String mastKey = mastMap.getString(JBSbatACIFM372.SVC_KEI_NO);
		
		String seikyYm = mastMap.getString(JBSbatACIFM372.HASHIN_END_YMD).substring(0,6);
		
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		outMap.setString(JBSbatACIFM015.TRKM_MT					, outPrcSysDivNm);										// 取込元
		outMap.setString(JBSbatACIFM015.SEIKY_NO				, JACStrConst.KARA_MOJI);								// 請求先番号
		outMap.setString(JBSbatACIFM015.SVC_KEI_NO				, mastMap.getString(JBSbatACIFM372.SVC_KEI_NO));		// サービス契約番号
		outMap.setString(JBSbatACIFM015.SVC_DTL_SKBT_NO			, JACStrConst.KARA_MOJI);								// サービス詳細識別番号
		outMap.setString(JBSbatACIFM015.ERR_NAIYO				, errMesssage);											// エラー内容
		outMap.setString(JBSbatACIFM015.PCRS_CD					, JACStrConst.KARA_MOJI);								// 料金コースコード
		outMap.setString(JBSbatACIFM015.PCRS_NM					, JACStrConst.KARA_MOJI);								// 料金コース名称
		outMap.setString(JBSbatACIFM015.PRC_SVC_CD				, JACStrConst.KARA_MOJI);								// 料金サービスコード
		outMap.setString(JBSbatACIFM015.PRC_KMK_CD				, JACStrConst.KARA_MOJI);								// 料金項目コード
		outMap.setString(JBSbatACIFM015.PRC_UCWK_NM				, JACStrConst.KARA_MOJI);								// 料金内訳名
		outMap.setString(JBSbatACIFM015.SEIKY_JIKI_SHITEI_CD	, tonyuKbn);											// 請求時期指定コード
		outMap.setString(JBSbatACIFM015.SEIKY_JIKI_SHITEI_NM	, tonyuKbnNm);											// 請求時期指定名
		outMap.setString(JBSbatACIFM015.SEIKY_YM				, seikyYm);												// 請求年月
		outMap.setString(JBSbatACIFM015.SEIKY_AMNT				, JACStrConst.KARA_MOJI);								// 請求金額
		
		//#85914 ADD START
		// 囲み文字("")付与
		outMap.setMap(JCHbatSeikyKaknoBusinessUtil.quote(outMap.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));
		//#85914 ADD END
		
		outMap.setOutFlg(true);
		
		// 出力レコード作成
		outputInItem.addOutMapList_2(outMap);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputData][outputInItem=" + outputInItem.getOutMapList().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputData]");
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		
		db_AC_M_JURYOPRC.close();
		db_CH_M_PRC_KMK_CS_CHGE.close();
		// 2024/07/02 IT1-2024-0000017 上島 ADD START
		db_CC_T_DLYD_TRN_REQ.close();
		
		//ファイルオブジェクトが存在する場合
		if(cntFile != null){
			cntFile.close();
			cntFile = null;
		}
		// 2024/07/02 IT1-2024-0000017 上島 ADD END
		
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * @return mastProcFlg を戻します。
	 */
	public boolean isMastProcFlg()
	{
		return mastProcFlg;
	}

	/**
	 * @return matchProcFlg を戻します。
	 */
	public boolean isMatchProcFlg()
	{
		return matchProcFlg;
	}

	/**
	 * @return tranProcFlg を戻します。
	 */
	public boolean isTranProcFlg()
	{
		return tranProcFlg;
	}

	/**
	 * @param mast_ProcFlg 設定する mastProcFlg。
	 */
	public void setMastProcFlg(boolean mast_ProcFlg)
	{
		this.mastProcFlg = mast_ProcFlg;
	}

	/**
	 * @param match_ProcFlg 設定する matchProcFlg。
	 */
	public void setMatchProcFlg(boolean match_ProcFlg)
	{
		this.matchProcFlg = match_ProcFlg;
	}

	/**
	 * @param tran_ProcFlg 設定する tranProcFlg。
	 */
	public void setTranProcFlg(boolean tran_ProcFlg)
	{
		this.tranProcFlg = tran_ProcFlg;
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 対象の料金グループ／料金コース／料金サービスと、基準日から
	 * 課金単価情報を取得します。
	 * 
	 * @param prcGrpCd 料金グループコード
	 * @param pcrsCd 料金コースコード
	 * @param prcSvcCd 料金サービスコード
	 * @param stdardymd 基準日
	 * @return 単価
	 */
	private String getChrgTanka(String prcGrpCd, String pcrsCd, String prcSvcCd, String stdardymd)
	{
		// 返却用
		String result = JACStrConst.KARA_MOJI;
		String key = prcGrpCd.concat(pcrsCd).concat(prcSvcCd);
		
		ArrayList<HashMap<String, Object>> dataList = (ArrayList<HashMap<String, Object>>)prcIcrn.get(key);
		
		for(HashMap<String, Object> dataMap : dataList)
		{
			String staYmd = (String)dataMap.get(JBSbatAC_M_JURYOPRC.JURYO_PRC_TSTAYMD);
			String endYmd = (String)dataMap.get(JBSbatAC_M_JURYOPRC.JURYO_PRC_TENDYMD);
			
			// 基準日が開始〜終了間の単価を取得して返却する
			if(JPCUtilCommon.isPastDate(staYmd, stdardymd, "1") && JPCUtilCommon.isFutureDate(endYmd, stdardymd, "1"))
			{
				result = (String)dataMap.get(JBSbatAC_M_JURYOPRC.TANI_PRC);
				break;
			}
		}
		
		return result;
	}
	
	/**
	 * 外部料金取込時の月別の料金項目コードを取得します
	 * 
	 * @param prcGrpCd 料金グループコード
	 * @param pcrsCd 料金コースコード
	 * @param prcSvcCd 料金サービスコード
	 * @param stdardymd 基準日
	 * @return 料金項目コード
	 */
	private String getPrcKmkCd(String prcGrpCd, String pcrsCd, String prcSvcCd, String stdardymd)
	{
		// 返却用
		String result = JACStrConst.KARA_MOJI;
		String month = JPCUtilCommon.toMonthFromYmd(stdardymd);
		String key = prcGrpCd.concat(pcrsCd).concat(prcSvcCd).concat(month);
		
		result = (String)outputPrcKmkCdMap.get(key);
		
		return result;
	}
	
	/**
	 * 従量料金情報取得処理
	 * 
	 * @param skbtCd 業務機能識別コード
	 * @param list 結果保持用リスト
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void getJuryoPrc(String skbtCd, HashMap<String, Object> tmpMap) throws Exception
	{
		// ＤＢアクセス用のパラメータ定義
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		
		// 対象キーの設定
		dbList.setValue(super.systemCode);				// システムコード
		dbList.setValue(skbtCd);						// 業務機能識別コード
		dbList.setValue(JACStrConst.CHSHT_CHG_CD_CST);	// 抽出変換コード
		
		// 従量料金情報取得
		this.executeAC_M_JURYOPRC_AC_SELECT_005(dbList.getList().toArray());
		
		// 取得結果をリストに保持
		JBSbatCommonDBInterface dbMap = db_AC_M_JURYOPRC.selectNext();
		while(dbMap != null)
		{
			String dbKmkCd = dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PRC_GRP_CD).concat(
					dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PCRS_CD)).concat(
					dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PRC_SVC_CD));
			
			// キー情報に紐づく格納データを取得する
			ArrayList<HashMap<String, Object>> dataList = (ArrayList<HashMap<String, Object>>)tmpMap.get(dbKmkCd);
			
			// データがなければ生成して追加する。
			if(dataList == null)
			{
				dataList = new ArrayList<HashMap<String, Object>>();
				tmpMap.put(dbKmkCd, dataList);
			}
			
			// 取得値を格納する
			HashMap<String, Object> childDataMap = new HashMap<String, Object>();
			childDataMap.put(JBSbatAC_M_JURYOPRC.JURYO_PRC_TSTAYMD	, dbMap.getString(JBSbatAC_M_JURYOPRC.JURYO_PRC_TSTAYMD));
			childDataMap.put(JBSbatAC_M_JURYOPRC.JURYO_PRC_TENDYMD	, dbMap.getString(JBSbatAC_M_JURYOPRC.JURYO_PRC_TENDYMD));
			childDataMap.put(JBSbatAC_M_JURYOPRC.TANI_PRC			, dbMap.getString(JBSbatAC_M_JURYOPRC.TANI_PRC));
			
			// 格納データに追加する
			dataList.add(childDataMap);
			
			dbMap = this.db_AC_M_JURYOPRC.selectNext();
		}
	}
	
	/**
	 * 外部料金取込投入用料金項目情報取得
	 * 
	 * @param skbtCd 業務機能識別コード
	 * @param list 結果保持用リスト
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void getPrkKmkCsChge(String mstSkbtCd, String trnSkbtCd, HashMap<String, Object> tmpMap) throws Exception
	{
		// ＤＢアクセス用のパラメータ定義
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		
		// 対象キーの設定
		dbList.setValue(super.systemCode);				// システムコード
		dbList.setValue(mstSkbtCd);						// 業務機能識別コード
		dbList.setValue(JACStrConst.CHSHT_CHG_CD_CST);	// 抽出変換コード
		dbList.setValue(super.opeDate);					// 料金項目抽出変換適用開始年月日
		dbList.setValue(super.opeDate);					// 料金項目抽出変換適用開始年月日
		dbList.setValue(super.systemCode);				// システムコード
		dbList.setValue(trnSkbtCd);						// 業務機能識別コード
		dbList.setValue(JACStrConst.CHSHT_CHG_CD_CHG);	// 抽出変換コード
		dbList.setValue(super.opeDate);					// 料金項目抽出変換適用開始年月日
		dbList.setValue(super.opeDate);					// 料金項目抽出変換適用開始年月日
		
		// 従量料金情報取得
		this.executeCH_M_PRC_KMK_CS_CHGE_AC_SELECT_031(dbList.getList().toArray());
		
		// 取得結果をリストに保持
		JBSbatCommonDBInterface dbMap = this.db_CH_M_PRC_KMK_CS_CHGE.selectNext();
		while(dbMap != null)
		{
			String key = dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PRC_GRP_CD).concat(
					dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PCRS_CD)).concat(
					dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PRC_SVC_CD).concat(
					dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.WORK_KINO_SKBT_CD).substring(7)));
			
			// キー情報に紐づく格納データを格納する
			tmpMap.put(key	, dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.OUT_PRC_KMK_CD));
			
			dbMap = this.db_CH_M_PRC_KMK_CS_CHGE.selectNext();
		}
	}
	
	/**
	 * コード名称管理テーブルからコード区分名、コード区分略称を取得する
	 * @param cdSbtCd	コード種別コード
	 * @param cdDiv	コード区分
	 * @return	String[]	0=コード区分名、1=コード区分略称
	 * @throws Exception
	 */
	private String[] getCdNmKanri(String cdSbtCd, String cdDiv) throws Exception
	{
		executeZM_M_CD_NM_KANRI_AC_SELECT_001(new Object[] {cdSbtCd, cdDiv, super.opeDate, super.opeDate});
		JBSbatCommonDBInterface record = db_ZM_M_CD_NM_KANRI.selectNext();
		if (record != null)
		{
			return new String[] {record.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM), 
					record.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_ALI)};
		}
		else
		{
			// コード名称管理テーブルから取得できない場合はエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE,
					new String[] { JBSbatZM_M_CD_NM_KANRI.TABLE_NAME });
		}
	}
	
	/**
	 * SQLKEY(AC_SELECT_007)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	システムコード
	 *		 	業務機能識別機能
	 *		 	抽出変換コード
	 *		 	バッチ実行日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeAC_M_JURYOPRC_AC_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_AC_M_JURYOPRC.selectBySqlDefine(paramList, AC_M_JURYOPRC_AC_SELECT_005);
	}
	
	/**
	 * SQLKEY(AC_SELECT_007)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	システムコード
	 *		 	業務機能識別機能
	 *		 	抽出変換コード
	 *		 	バッチ実行日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_M_PRC_KMK_CS_CHGE_AC_SELECT_031(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());
		paramList.setValue(param[9].toString());
		
		// DBアクセスを実行します
		db_CH_M_PRC_KMK_CS_CHGE.selectBySqlDefine(paramList, CH_M_PRC_KMK_CS_CHGE_AC_SELECT_031);
	}
	
	/**
	 * SQLKEY(AC_SELECT_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 executeZM_M_CD_NM_KANRI_AC_SELECT_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_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_AC_SELECT_001);
	}
	// 2024/07/02 IT1-2024-0000017 上島 ADD START
	/**
	 * SQLKEY(AC_SELECT_002)でDBアクセスを行い件数を返します。
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int countCC_T_DLYD_TRN_REQ_AC_SELECT_002(JBSbatCommonDBInterface param) throws Exception
	{
		int count = 0;
		count = db_CC_T_DLYD_TRN_REQ.executeBySqlDefine(param, CC_T_DLYD_TRN_REQ_AC_SELECT_002);
		return count;
	}
	// 2024/07/02 IT1-2024-0000017 上島 ADD END
}
