/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHYoksiSikySkIcrnSksi
*	ソースファイル名	：JBSbatCHYoksiSikySkIcrnSksi.java
*	作成者				：富士通　
*	作成日				：2011年09月22日
*＜機能概要＞
*　抑止請求先一覧作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/22   富士通		新規作成
*	v4.00.00	2013/05/03   FJ)早崎	【TG1-2013-0000253】
*	v5.00		2013/07/27   FJ)前田	【IT1-2013-0001466】記事に改行が入っているときに改行をはずすように修正
*	v5.01		2013/08/13   FJ)早崎	【TG1-2013-0000806】文字化け対応
*	v33.00.00	2017/08/15   FJ)田中	【ANK-3235-00-00】（契アシRDSツール改善）抑止請求先一覧
*	v53.00.00	2021/05/11   FJ)山地	【ANK-3983-00-00】抑止請求先一覧（エスプリ）の出力条件変更対応
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JACBatCommon;
import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCHbatSeikyKaknoBusinessUtil;
import eo.business.util.file.JBSbatCHIFM367;
import eo.business.util.file.JBSbatCHIFM065;
import eo.business.util.table.JBSbatCH_T_PRC_TAIOKRK;
import eo.business.util.table.JBSbatCH_T_TOKUSOKU;
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.JCHStringUtil;
import eo.common.util.JCHUtilCommon;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatOutputFileUtil;

/**
* 抑止請求先一覧作成 <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHYoksiSikySkIcrnSksi extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(料金対応記録)*/
	private static final String D_TBL_NAME_CH_T_PRC_TAIOKRK = "CH_T_PRC_TAIOKRK";

	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";
	
	// ANK-3235-00-00 ADD START
	/** テーブル(督促)*/
	private static final String D_TBL_NAME_CH_T_TOKUSOKU = "CH_T_TOKUSOKU";
	// ANK-3235-00-00 ADD END	

	/** SQL定義キー(CH_SELECT_001)*/
	private static final String CH_T_PRC_TAIOKRK_CH_SELECT_001 = "CH_SELECT_001";

	/** SQL定義キー(AC_SELECT_002)*/
	private static final String ZM_M_CD_NM_KANRI_AC_SELECT_002 = "AC_SELECT_002";
	
	// ANK-3235-00-00 ADD START
	/** SQL定義キー(CH_SELECT_019)*/
	private static final String CH_T_TOKUSOKU_CH_SELECT_019 = "CH_SELECT_019";
	// ANK-3235-00-00 ADD END

	/** テーブルアクセスクラス(料金対応記録)*/
	private JBSbatSQLAccess db_CH_T_PRC_TAIOKRK = null;
	
	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	
	// ANK-3235-00-00 ADD START
	/** テーブルアクセスクラス(督促)*/
	private JBSbatSQLAccess db_CH_T_TOKUSOKU = null;
	// ANK-3235-00-00 ADD END
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 文字列：○ */
	private static final String CHAR_MARU = "○";
	
	/** 文字列：全角スペース */
	private static final String CHAR_SPACE = "　";
	
	/** 退避．請求年月 */
	private String befSeikyYm = null;
	
	/** 退避．退避．請求契約番号 */
	private String befSeikyKeiNo = null;
	
	/** 退避．請求書等発行抑止 */
	private String sksHakkoYoksi = CHAR_SPACE;
	
	// ANK-3983-00-00 DEL START
	// /** 退避．請求書等内訳発行抑止 */
	// private String sksUcwkHakkoYoksi = CHAR_SPACE;
	
	// /** 退避．口座番号表示抑止 */
	// private String kozaNoDspYoksi = CHAR_SPACE;
	// ANK-3983-00-00 DEL END
	
	/** 退避．合算請求抑止 */
	private String gsanSeikyYoksi = CHAR_SPACE;
	
	/** 退避．強制窓口抑止 */
	private String kyoseiMdgcYoksi = CHAR_SPACE;
	
	/** 退避．督促抑止 */
	private String tokusokuYoksi = CHAR_SPACE;
	
	// ANK-3983-00-00 DEL START
	// /** 退避．請求書発行手数料抑止 */
	// private String sksHakkoCmsYoksi = CHAR_SPACE;
	// ANK-3983-00-00 DEL END
	
	/** 出力件数 */
	private int outputCnt = 0;

	/** 請求収納業務共通クラス */
	private JCHbatSeikyKaknoBusinessUtil seikyKaknoBusinessUtil = null;
	
	/** 請求抑止コードマップ */
	private HashMap<String, String> seikyYoksiCdMap = null;

	/** 料金対応記録マップ */
	private HashMap<String, ArrayList<String>> prcTaiokrkMap = null;

	/** 発行抑止コードリスト */
	private ArrayList<String> hakYoksiCdList = null;

	/** 編集用 バイト数制限値 */
	private final int BYTE_SIZE = 160;

	/** DB未存在フラグ */
	boolean miSonzaiFlg = false;
	
	/** 出力済み判定フラグ */
	boolean outPutZmiFlg = false;
	

	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CH_T_PRC_TAIOKRK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_PRC_TAIOKRK);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		// ANK-3235-00-00 ADD START
		db_CH_T_TOKUSOKU = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_TOKUSOKU);
		// ANK-3235-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial][opeDate=" + super.opeDate + "]");
		
		
		// コード区分名称の取得
		executeZM_M_CD_NM_KANRI_AC_SELECT_002(new Object[] {JZM0171Constant.CD00111, super.opeDate, super.opeDate});
		JBSbatCommonDBInterface dbMap = db_ZM_M_CD_NM_KANRI.selectNext();
		
		// DB未存在エラー
		if (dbMap == null)
		{
			// コード名称管理テーブルから取得できない場合はエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE, new String[] { JBSbatZM_M_CD_NM_KANRI.TABLE_NAME });
		}
		
		// 請求抑止コードマップを設定する
		this.seikyKaknoBusinessUtil = new JCHbatSeikyKaknoBusinessUtil(commonItem);
		seikyYoksiCdMap = new HashMap<String, String>();
		while(dbMap != null)
		{
			// コード区分名
			String cdDivNm = dbMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);
			
			// 10桁を超えるコード区分名は10桁に合わせて編集する
			if(cdDivNm.length() > 10)
			{
				cdDivNm = cdDivNm.substring(0, 10);
			}
			
			// コード区分名を編集(10桁＋全角スペース)
			cdDivNm = seikyKaknoBusinessUtil.fillString(JCHbatSeikyKaknoBusinessUtil.FillType.Space, cdDivNm, 10, true).concat(JACStrConst.FULL_SPACE_1);

			seikyYoksiCdMap.put(dbMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV), cdDivNm);
			dbMap = db_ZM_M_CD_NM_KANRI.selectNext();
		}
		
		// ANK-3983-00-00 ADD START
		// ヘッダー出力
		writeHeader();
		// ANK-3983-00-00 ADD END

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @param outputInItem
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][inMap=" + inMap.getMap().toString() + "]"):true;
		
		JBSbatServiceInterfaceMap yoksiSeikySkIcrnInfo = null;
		
		// 出力判断フラグ
		boolean outPutFlg = false;
		
		
		// 最終レコードの場合
		if(inMap == null)
		{

			for(int i = 0; i <  hakYoksiCdList.size(); i++)
			{
				// 抑止請求先一覧情報作成
				yoksiSeikySkIcrnInfo = makeYoksiSeikySkIcrn(hakYoksiCdList.get(i));
			
				// 出力フラグON
				yoksiSeikySkIcrnInfo.setOutFlg(true);

				// 出力共通電文設定
				outputInItem.addOutMapList(yoksiSeikySkIcrnInfo);
				
				if(!this.outPutZmiFlg)
				{
					// 退避抑止コードの初期化
					sksHakkoYoksi = CHAR_SPACE;
					// ANK-3983-00-00 DEL START
					// sksUcwkHakkoYoksi = CHAR_SPACE;
					// kozaNoDspYoksi = CHAR_SPACE;
					// ANK-3983-00-00 DEL END
					gsanSeikyYoksi = CHAR_SPACE;
					kyoseiMdgcYoksi = CHAR_SPACE;
					tokusokuYoksi = CHAR_SPACE;
					// ANK-3983-00-00 DEL START
					// sksHakkoCmsYoksi = CHAR_SPACE;
					// ANK-3983-00-00 DEL END
				}
				
				// 出力済み判定フラグ ← true
				this.outPutZmiFlg = true;

			}
			
			return outputInItem;
		}
		
		// 請求年月取得
		String seikyYm = inMap.getString(JBSbatCHIFM065.SEIKY_YM);
		// 請求契約番号取得
		String seikyKeiNo = inMap.getString(JBSbatCHIFM065.SEIKY_KEI_NO);
		// 発行抑止コード 
		String hakYoksiCd = inMap.getString(JBSbatCHIFM065.HAK_YOKSI_CD);
				
		// 1レコード目の場合の初期化・退避処理
		if(befSeikyYm == null)
		{
			// 退避・初期化処理
			befSeikyYm = seikyYm;
			befSeikyKeiNo = seikyKeiNo;
			hakYoksiCdList = new ArrayList<String>();
			prcTaiokrkMap = new HashMap<String, ArrayList<String>>();
			
			// ダミーレコードを設定しておく
			outputInItem.addOutMapList(new JBSbatServiceInterfaceMap());
			
			// 関連記事取得
			selectKanrenKiji(befSeikyKeiNo);
			
			// 抑止情報退避処理
			outPutFlg = taihiYoksiInfo(hakYoksiCd);
			
			// 出力対象レコードの場合
			if(outPutFlg)
			{
				// 発行抑止コードリストに追加する
				hakYoksiCdList.add(hakYoksiCd);
			}
			
			return outputInItem;
		}

		// キーとなる請求年月と請求契約番号が不一致の場合
		if(!seikyYm.equals(befSeikyYm) || !seikyKeiNo.equals(befSeikyKeiNo))
		{
			// 発行抑止コードリスト格納分下記処理を行う
			for(int i = 0; i < hakYoksiCdList.size(); i++)
			{
				// 抑止請求先一覧情報作成
				yoksiSeikySkIcrnInfo = makeYoksiSeikySkIcrn(hakYoksiCdList.get(i));
			
				// 出力フラグON
				yoksiSeikySkIcrnInfo.setOutFlg(true);

				// 出力共通電文設定
				outputInItem.addOutMapList(yoksiSeikySkIcrnInfo);
				
				
				if(!this.outPutZmiFlg)
				{
					// 退避抑止コードの初期化
					sksHakkoYoksi = CHAR_SPACE;
					// ANK-3983-00-00 DEL START
					// sksUcwkHakkoYoksi = CHAR_SPACE;
					// kozaNoDspYoksi = CHAR_SPACE;
					// ANK-3983-00-00 DEL END
					gsanSeikyYoksi = CHAR_SPACE;
					kyoseiMdgcYoksi = CHAR_SPACE;
					tokusokuYoksi = CHAR_SPACE;
					// ANK-3983-00-00 DEL START
					// sksHakkoCmsYoksi = CHAR_SPACE;
					// ANK-3983-00-00 DEL END
				}
				
				// 出力済み判定フラグ ← true
				this.outPutZmiFlg = true;
			}
			
			// 退避処理、退避項目初期化処理
			befSeikyYm = seikyYm;
			befSeikyKeiNo = seikyKeiNo;
			hakYoksiCdList.clear();
			prcTaiokrkMap.clear();
			miSonzaiFlg = false;
			outPutZmiFlg = false;
			
			// 関連記事取得
			selectKanrenKiji(befSeikyKeiNo);

		}

		// 発行抑止コードリストに未存在の場合
		if(!hakYoksiCdExistChk(hakYoksiCd))
		{
			// 抑止情報退避処理
			outPutFlg = taihiYoksiInfo(hakYoksiCd);
		
			// 出力対象レコードの場合
			if(outPutFlg)
			{
				// 発行抑止コードリストに追加する
				hakYoksiCdList.add(hakYoksiCd);
			}
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		return outputInItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 抑止請求先一覧情報作成
	 * 
	 * @param hakYoksiCd 発行抑止コード
	 * @return 抑止請求先一覧情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatServiceInterfaceMap makeYoksiSeikySkIcrn(String hakYoksiCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeYoksiSeikySkIcrn]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeYoksiSeikySkIcrn][hakYoksiCd=" + hakYoksiCd + "]");

		// 未出力の請求契約番号の場合
		if(!this.outPutZmiFlg)
		{
			// 出力件数カウントアップ
			outputCnt++;
		}
		
		// 抑止請求先一覧情報
		JBSbatServiceInterfaceMap yoksiSeikySkIcrnInfo = new JBSbatServiceInterfaceMap();
		
		// ANK-3983-00-00 MOD START
//		// 請求年月
//		yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.SEIKY, JCHbatSeikyKaknoBusinessUtil.formatDate(seikyKaknoBusinessUtil.delZero(befSeikyYm)));
//	
//		// 項番
//		if(!this.outPutZmiFlg)
//		{
//			yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.KMK_NO, String.valueOf(outputCnt));
//		}
//		else
//		{
//			yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.KMK_NO, JACStrConst.KARA_MOJI);
//		}
//		
//		// 請求契約番号
//		if(!this.outPutZmiFlg)
//		{
//			yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.SEIKY_KEI_NO, befSeikyKeiNo);
//		}
//		else
//		{
//			yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.SEIKY_KEI_NO, JACStrConst.KARA_MOJI);
//		}
//		
//		// 請求書等発行抑止
//		yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.SEIKYUS_TU_HAKKO_YOKSI, sksHakkoYoksi);
//		
//		// 請求書等内訳発行抑止
//		yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.SEIKYUS_TU_UCWK_HAKKO_YOKSI, sksUcwkHakkoYoksi);
//		
//		// 口座番号表示抑止
//		yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.KOZA_NO_DSP_YOKSI, kozaNoDspYoksi);
//	
//		// 合算請求抑止
//		yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.GSAN_SEIKY_YOKSI, gsanSeikyYoksi);
//	
//		// 強制窓口抑止
//		yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.KYOSEI_MDGC_YOKSI, kyoseiMdgcYoksi);
//	
//		// 督促抑止
//		yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.TOKUSOKU_YOKSI, tokusokuYoksi);
//	
//		// 請求書発行手数料抑止
//		yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.SEIKYUS_HAKKO_COMMISION_YOKSI, sksHakkoCmsYoksi);
//		
//		// 関連記事情報取得
//		
//		// 関連記事
//		String kanrenKiji = JACStrConst.KARA_MOJI;
//		
//		// 料金対応記録マップより対象情報を取得
//		ArrayList<String> infoList = new ArrayList<String>(); 
//		infoList = prcTaiokrkMap.get(selectKey(hakYoksiCd));
//
//		// 料金対応記録マップに対象情報がある場合 または DB未存在フラグ=trueの場合
//		if(infoList != null || miSonzaiFlg)
//		{
//			// 料金対応記録マップに対象情報がある場合
//			if(infoList != null)
//			{
//				// 関連記事を取得
//				kanrenKiji = infoList.get(1);
//			}
//			
//			// 関連記事(請求抑止コード名称＋関連記事)
//			yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.KNRN_KIJI, JCHUtilCommon.getBcutStr(seikyYoksiCdMap.get(hakYoksiCd).concat(kanrenKiji), this.BYTE_SIZE));
//		}
//		else
//		{
//			// 関連記事(請求抑止コード名称)
//			yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.KNRN_KIJI, kanrenKiji);
//		}
//
//		// ANK-3235-00-00 ADD START
//		// 支払約束履行判定年月日
//		if(!this.outPutZmiFlg)
//		{
//			
//			//支払約束履行判定年月日の取得
//			String payYakusokuRikoJdgYMD = selectPayYakusokuRikoJdgYMD(befSeikyKeiNo);
//			
//			yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.PAY_YAKUSOKU_RIKO_JDG_YMD, JCHbatSeikyKaknoBusinessUtil.formatDateDay(payYakusokuRikoJdgYMD));
//		}
//		else
//		{
//			yoksiSeikySkIcrnInfo.set(JBSbatCHIFE005.PAY_YAKUSOKU_RIKO_JDG_YMD, CHAR_SPACE);
//		}
//		// ANK-3235-00-00 ADD END
		
		// 請求年月
		yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.SEIKY, JCHbatSeikyKaknoBusinessUtil.formatDate(seikyKaknoBusinessUtil.delZero(befSeikyYm)));
	
		// 項番
		if(!this.outPutZmiFlg)
		{
			yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.KMK_NO, String.valueOf(outputCnt));
		}
		else
		{
			yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.KMK_NO, JACStrConst.KARA_MOJI);
		}
		
		// 請求契約番号
		if(!this.outPutZmiFlg)
		{
			yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.SEIKY_KEI_NO, befSeikyKeiNo);
		}
		else
		{
			yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.SEIKY_KEI_NO, JACStrConst.KARA_MOJI);
		}
		
		// 請求書等発行抑止
		yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.SEIKYUS_TU_HAKKO_YOKSI, sksHakkoYoksi);
	
		// 合算請求抑止
		yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.GSAN_SEIKY_YOKSI, gsanSeikyYoksi);
	
		// 強制窓口抑止
		yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.KYOSEI_MDGC_YOKSI, kyoseiMdgcYoksi);
	
		// 督促抑止
		yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.TOKUSOKU_YOKSI, tokusokuYoksi);
		
		// 関連記事情報取得
		
		// 関連記事
		String kanrenKiji = JACStrConst.KARA_MOJI;
		
		// 料金対応記録マップより対象情報を取得
		ArrayList<String> infoList = new ArrayList<String>(); 
		infoList = prcTaiokrkMap.get(selectKey(hakYoksiCd));

		// 料金対応記録マップに対象情報がある場合 または DB未存在フラグ=trueの場合
		if(infoList != null || miSonzaiFlg)
		{
			// 料金対応記録マップに対象情報がある場合
			if(infoList != null)
			{
				// 関連記事を取得
				kanrenKiji = infoList.get(1);
			}
			
			// 関連記事(請求抑止コード名称＋関連記事)
			yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.KNRN_KIJI, JCHUtilCommon.getBcutStr(seikyYoksiCdMap.get(hakYoksiCd).concat(kanrenKiji), this.BYTE_SIZE));
		}
		else
		{
			// 関連記事(請求抑止コード名称)
			yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.KNRN_KIJI, kanrenKiji);
		}

		// ANK-3235-00-00 ADD START
		// 支払約束履行判定年月日
		if(!this.outPutZmiFlg)
		{
			
			//支払約束履行判定年月日の取得
			String payYakusokuRikoJdgYMD = selectPayYakusokuRikoJdgYMD(befSeikyKeiNo);
			
			yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.PAY_YAKUSOKU_RIKO_JDG_YMD, JCHbatSeikyKaknoBusinessUtil.formatDateDay(payYakusokuRikoJdgYMD));
		}
		else
		{
			yoksiSeikySkIcrnInfo.set(JBSbatCHIFM367.PAY_YAKUSOKU_RIKO_JDG_YMD, CHAR_SPACE);
		}
		// ANK-3983-00-00 MOD END
		
		// 出力内容を項目ごとにダブルコーテーション（""）で囲む
		yoksiSeikySkIcrnInfo.setMap(JCHbatSeikyKaknoBusinessUtil.quote(yoksiSeikySkIcrnInfo.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint
						, "[E][makeYoksiSeikySkIcrn][yoksiSeikySkIcrnInfo=" + yoksiSeikySkIcrnInfo.getMap().toString());
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeYoksiSeikySkIcrn]");
		
		return yoksiSeikySkIcrnInfo;
	}

	/**
	 * 関連記事を取得します。
	 * 
	 * @param SeikyKeiNo 請求契約番号
	 * @return 関連記事
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void selectKanrenKiji(String SeikyKeiNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectKanrenKiji]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectKanrenKiji][SeikyKeiNo=" + SeikyKeiNo + "]");
		
		// 条件値
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		// 請求契約番号
		whereParam.setValue(SeikyKeiNo);
		// 料金対応記録種別詳細コード(請求書等発行抑止)
		whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_HAK_YKS);
		// ANK-3983-00-00 DEL START
		// // 料金対応記録種別詳細コード(請求書等内訳発行抑止)
		// whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_UW_YKS);
		// // 料金対応記録種別詳細コード(口座番号表示抑止)
		// whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_KZA_YKS);
		// ANK-3983-00-00 DEL END
		// 料金対応記録種別詳細コード(合算請求抑止)
		whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_GSN_YKS);
		// ANK-3983-00-00 DEL START
		// // 料金対応記録種別詳細コード(請求書発行手数料抑止(課金))
		// whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_CMS_YKS);
		// ANK-3983-00-00 DEL END
		// 料金対応記録種別詳細コード(強制窓口抑止)
		whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_MGC_YKS);
		// 料金対応記録種別詳細コード(督促抑止)
		whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_TKS_YKS);
		// 料金対応記録種別詳細コード(請求書等発行抑止解除)
		whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_HAK_YKS_KAI);
		// ANK-3983-00-00 DEL START
		// // 料金対応記録種別詳細コード(請求書等内訳発行抑止解除)
		// whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_UW_YKS_KAI);
		// // 料金対応記録種別詳細コード(口座番号表示抑止解除)
		// whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_KZA_YKS_KAI);
		// ANK-3983-00-00 DEL END
		// 料金対応記録種別詳細コード(合算請求抑止解除)
		whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_GSN_YKS_KAI);
		// ANK-3983-00-00 DEL START
		// // 料金対応記録種別詳細コード(請求書発行手数料抑止(課金)解除)
		// whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_CMS_YKS_KAI);
		// ANK-3983-00-00 DEL END
		// 料金対応記録種別詳細コード(強制窓口抑止解除)
		whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_MGC_YKS_KAI);
		// 料金対応記録種別詳細コード(督促抑止解除)
		whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_TKS_YKS_KAI);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectKanrenKiji][whereParam=" + whereParam.getList().toString() + "]");
		
		// 料金対応記録検索SQL実行
		executeCH_T_PRC_TAIOKRK_CH_SELECT_001(whereParam.getList().toArray());
		JBSbatCommonDBInterface selectMap = db_CH_T_PRC_TAIOKRK.selectNext();
		
		// 取得した結果が0件だった場合
		if (selectMap == null)
		{
			// ログ出力（【エラー】ＤＢ未存在エラー）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW,
					new String[]{ JBSbatCH_T_PRC_TAIOKRK.TABLE_NAME, whereParam.getList().toString() });
			
			// DB未存在フラグ ← true
			miSonzaiFlg = true;
		}
		
		// 検索結果を取得する
		while(selectMap != null)
		{
			// 料金対応記録種別詳細コード 
			String prcTaioKirokSbtDtlCd = selectMap.getString(JBSbatCH_T_PRC_TAIOKRK.PRC_TAIO_KIROK_SBT_DTL_CD);
		
			ArrayList<String> tempList = new ArrayList<String>();
			
			// 対応年月日時分秒
			tempList.add(selectMap.getString(JBSbatCH_T_PRC_TAIOKRK.TAIO_DTM));
			// 記事
			tempList.add(kaigyoDel(selectMap.getString(JBSbatCH_T_PRC_TAIOKRK.KIJI)));
			
			// 料金対応記録マップに格納
			// key:料金対応記録種別詳細コード value:[0]=対応年月日時分秒,[1]=記事
			prcTaiokrkMap.put(prcTaioKirokSbtDtlCd, tempList);
			
			// 次レコードを取得
			selectMap = db_CH_T_PRC_TAIOKRK.selectNext();
		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectKanrenKiji]");
	}

	// ANK-3235-00-00 ADD START
	/**
	 * 支払約束履行判定年月日を取得します。
	 * 
	 * @param seikyKeiNo 請求契約番号
	 * @return 支払約束履行判定年月日
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private String selectPayYakusokuRikoJdgYMD(String seikyKeiNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectPayYakusokuRikoJdgYMD]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectPayYakusokuRikoJdgYMD][SeikyKeiNo=" + seikyKeiNo + "]");
		
		// 条件値
		JBSbatCommonDBInterface whereParamTokusoku = new JBSbatCommonDBInterface();
		// 請求契約番号
		whereParamTokusoku.setValue(seikyKeiNo);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectPayYakusokuRikoJdgYMD][whereParamTokusoku=" + whereParamTokusoku.getList().toString() + "]");
		
		// 督促.支払約束履行判定年月日検索SQL実行
		executeCH_T_TOKUSOKU_CH_SELECT_019(whereParamTokusoku.getList().toArray());
		JBSbatCommonDBInterface selectMap = db_CH_T_TOKUSOKU.selectNext();
		
		String payYakusokuRikoJdgYMD = CHAR_SPACE;
		
		// 検索結果を取得する
		while(selectMap != null)
		{
		
			String tmpPayYakusokuRikoJdgYMD = selectMap.getString(JBSbatCH_T_TOKUSOKU.PAY_YAKUSOKU_RIKO_JDG_YMD);
			if (JCHStringUtil.isNullBlank(tmpPayYakusokuRikoJdgYMD))
			{
				tmpPayYakusokuRikoJdgYMD = CHAR_SPACE;
			}
			
			// 支払約束履行判定年月日
			payYakusokuRikoJdgYMD = tmpPayYakusokuRikoJdgYMD;
			
			// 次レコードを取得
			selectMap = db_CH_T_TOKUSOKU.selectNext();
		}

		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectPayYakusokuRikoJdgYMD]");
		
		return payYakusokuRikoJdgYMD;
	}
	// ANK-3235-00-00 ADD END
	
	/**
	 * 抑止発行コードをもとに、抑止情報を退避します。
	 * 
	 * @param hakkoYoksiCd 発行抑止コード
	 * @return outPutJudgeFlg
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private boolean taihiYoksiInfo(String hakkoYoksiCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][taihiYoksiInfo]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][taihiYoksiInfo][hakkoYoksiCd=" + hakkoYoksiCd + "]");
		
		// 出力判定フラグ
		boolean outPutJudgeFlg = false;
		
		// 料金対応記録詳細分類コード
		// 抑止コード
		String yoksiCd = null;
		// 抑止解除コード
		String yoksiKaiCd = null;
		
		// 請求書等発行抑止
		if(JACStrConst.SEIKY_YOKSI_CD_SKS_YOKSI.equals(hakkoYoksiCd))
		{
			// 抑止コード ← 請求書等発行抑止
			yoksiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_HAK_YKS;
			
			// 抑止解除コード ← 請求書等発行抑止解除
			yoksiKaiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_HAK_YKS_KAI;
			
			// 出力対象判定処理を行う
			outPutJudgeFlg = taihiYokusiCdJudge(yoksiCd, yoksiKaiCd);
			
			// 出力対象だった場合
			if(outPutJudgeFlg)
			{
				// 退避．請求書等発行抑止 ← ○
				sksHakkoYoksi = CHAR_MARU;
			}
		}
		// ANK-3983-00-00 DEL START
		// // 請求書等内訳発行抑止
		// else if(JACStrConst.SEIKY_YOKSI_CD_SEIKYUS_TOU.equals(hakkoYoksiCd))
		// {
		// 	// 抑止コード ← 請求書等内訳発行抑止
		// 	yoksiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_UW_YKS;
		// 	
		// 	// 抑止解除コード ← 請求書等内訳発行抑止解除
		// 	yoksiKaiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_UW_YKS_KAI;
		// 	
		// 	// 出力対象判定処理を行う
		// 	outPutJudgeFlg = taihiYokusiCdJudge(yoksiCd, yoksiKaiCd);
		// 	
		// 	// 出力対象だった場合
		// 	if(outPutJudgeFlg)
		// 	{
		// 		// 退避．請求書等内訳発行抑止 ← ○
		// 		sksUcwkHakkoYoksi = CHAR_MARU;
		// 	}
		// }
		// // 口座番号表示抑止
		// else if(JACStrConst.SEIKY_YOKSI_CD_KOZANO_YOKSI.equals(hakkoYoksiCd))
		// {
		// 	// 抑止コード ← 口座番号表示抑止
		// 	yoksiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_KZA_YKS;
		// 	
		// 	// 抑止解除コード ← 口座番号表示抑止解除
		// 	yoksiKaiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_KZA_YKS_KAI;
		// 	
		// 	// 出力対象判定処理を行う
		// 	outPutJudgeFlg = taihiYokusiCdJudge(yoksiCd, yoksiKaiCd);
		// 	
		// 	// 出力対象だった場合
		// 	if(outPutJudgeFlg)
		// 	{
		// 		// 退避．口座番号表示抑止 ← ○
		// 		kozaNoDspYoksi = CHAR_MARU;
		// 	}
		// }
		// ANK-3983-00-00 DEL END
		// 合算請求抑止
		else if(JACStrConst.SEIKY_YOKSI_CD_GSN_SEIKY.equals(hakkoYoksiCd))
		{
			// 抑止コード ← 合算請求抑止
			yoksiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_GSN_YKS;
			
			// 抑止解除コード ← 合算請求抑止解除
			yoksiKaiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_GSN_YKS_KAI;
			
			// 出力対象判定処理を行う
			outPutJudgeFlg = taihiYokusiCdJudge(yoksiCd, yoksiKaiCd);
			
			// 出力対象だった場合
			if(outPutJudgeFlg)
			{
				// 退避．合算請求抑止 ← ○
				gsanSeikyYoksi = CHAR_MARU;
			}
		}
		// ANK-3983-00-00 DEL START
		// // 請求書発行手数料抑止（課金）
		// else if(JACStrConst.SEIKY_YOKSI_CD_HAK_CMS_YOKSI.equals(hakkoYoksiCd))
		// {
		// 	// 抑止コード ← 請求書発行手数料抑止（課金）
		// 	yoksiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_CMS_YKS;
		// 	
		// 	// 抑止解除コード ← 請求書発行手数料抑止（課金）解除
		// 	yoksiKaiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_CMS_YKS_KAI;
		// 	
		// 	// 出力対象判定処理を行う
		// 	outPutJudgeFlg = taihiYokusiCdJudge(yoksiCd, yoksiKaiCd);
		// 	
		// 	// 出力対象だった場合
		// 	if(outPutJudgeFlg)
		// 	{
		// 		// 退避．請求書発行手数料抑止 ← ○
		// 		sksHakkoCmsYoksi = CHAR_MARU;
		// 	}
		// }
		// ANK-3983-00-00 DEL END
		// 強制窓口抑止
		else if(JACStrConst.SEIKY_YOKSI_CD_KYOSEI_MDGC.equals(hakkoYoksiCd))
		{
			// 抑止コード ← 強制窓口抑止
			yoksiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_MGC_YKS;
			
			// 抑止解除コード ← 強制窓口抑止解除
			yoksiKaiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_MGC_YKS_KAI;
			
			// 出力対象判定処理を行う
			outPutJudgeFlg = taihiYokusiCdJudge(yoksiCd, yoksiKaiCd);
			
			// 出力対象だった場合
			if(outPutJudgeFlg)
			{
				// 退避．強制窓口抑止 ← ○
				kyoseiMdgcYoksi = CHAR_MARU;
			}
		}
		// 督促抑止
		else if(JACStrConst.SEIKY_YOKSI_CD_TKSK.equals(hakkoYoksiCd))
		{
			// 抑止コード ← 督促抑止
			yoksiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_TKS_YKS;
			
			// 抑止解除コード ← 督促抑止解除
			yoksiKaiCd = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_TKS_YKS_KAI;
			
			// 出力対象判定処理を行う
			outPutJudgeFlg = taihiYokusiCdJudge(yoksiCd, yoksiKaiCd);
			
			// 出力対象だった場合
			if(outPutJudgeFlg)
			{
				// 退避．督促抑止 ← ○
				tokusokuYoksi = CHAR_MARU;
			}
		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][taihiYoksiInfo]");

		return outPutJudgeFlg;
	}

	
	/**
	 * 対象の発行抑止コードが出力対象かどうか判断します。
	 * 
	 * @param yoksiCd 抑止コード
	 * @param yoksiKaiCd 抑止解除コード
	 * @return outPutJudgeFlg 出力判定フラグ true:出力対象 false:出力対象外
	 */
	private boolean taihiYokusiCdJudge(String yoksiCd, String yoksiKaiCd)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][taihiYokusiCdJudge]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint
						, "[S][taihiYokusiCdJudge][yoksiCd=" + yoksiCd + ",yoksiKaiCd=" + yoksiKaiCd + "]");

		// 出力判定フラグ
		boolean outPutJudgeFlg = false;
	
		// 抑止
		ArrayList<String> date = prcTaiokrkMap.get(yoksiCd);
		
		// 抑止解除
		ArrayList<String> date_kai = prcTaiokrkMap.get(yoksiKaiCd);
		
		// 抑止情報 かつ 抑止解除情報が存在する場合
		if(date != null && date_kai != null)
		{
			// 抑止情報．対応年月日時分秒 > 抑止解除情報．対応年月日時分秒
			if(date.get(0).compareTo(date_kai.get(0)) > 0)
			{
				outPutJudgeFlg = true;
			}
		}
		// 抑止情報のみ存在する場合
		else if(date != null && date_kai == null)
		{
			outPutJudgeFlg = true;
		}
		// 抑止情報 かつ 抑止解除情報が存在しない場合
		else if(date == null && date_kai == null)
		{
			// 出力判定フラグ ← true
			outPutJudgeFlg = true;
			
			// DB未存在フラグ ← true
			miSonzaiFlg = true;
		}
	
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][taihiYokusiCdJudge]");

		return outPutJudgeFlg;
	}
	

	/**
	 * 発行抑止コードに対応する料金対応記録マップを検索するキー情報を選択します。
	 * 
	 * @param hakkoYoksiCd 発行抑止コード
	 * @return selectKey 料金対応記録マップ検索キー
	 */
	private String selectKey(String hakkoYoksiCd)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectKey]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectKey][hakkoYoksiCd=" + hakkoYoksiCd + "]");

		// 料金対応記録マップ検索キー
		String selectKey = JACStrConst.KARA_MOJI;
		
		// 請求書等発行抑止
		if(JACStrConst.SEIKY_YOKSI_CD_SKS_YOKSI.equals(hakkoYoksiCd))
		{
			selectKey = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_HAK_YKS;
		}
		// ANK-3983-00-00 DEL START
		// // 請求書等内訳発行抑止
		// else if(JACStrConst.SEIKY_YOKSI_CD_SEIKYUS_TOU.equals(hakkoYoksiCd))
		// {
		// 	selectKey = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_UW_YKS;
		// }
		// // 口座番号表示抑止
		// else if(JACStrConst.SEIKY_YOKSI_CD_KOZANO_YOKSI.equals(hakkoYoksiCd))
		// {
		// 	selectKey = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_KZA_YKS;
		// }
		// ANK-3983-00-00 DEL END
		// 合算請求抑止
		else if(JACStrConst.SEIKY_YOKSI_CD_GSN_SEIKY.equals(hakkoYoksiCd))
		{
			selectKey = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_GSN_YKS;
		}
		// ANK-3983-00-00 DEL START
		// // 請求書発行手数料抑止（課金）
		// else if(JACStrConst.SEIKY_YOKSI_CD_HAK_CMS_YOKSI.equals(hakkoYoksiCd))
		// {
		// 	selectKey = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_CMS_YKS;
		// }
		// ANK-3983-00-00 DEL END
		// 強制窓口抑止
		else if(JACStrConst.SEIKY_YOKSI_CD_KYOSEI_MDGC.equals(hakkoYoksiCd))
		{
			selectKey = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_MGC_YKS;
		}
		// 督促抑止
		else if(JACStrConst.SEIKY_YOKSI_CD_TKSK.equals(hakkoYoksiCd))
		{
			selectKey = JACStrConst.PRC_TAIO_KIROK_SBT_DTL_TKS_YKS;
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectKey][selectKey=" + selectKey + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectKey]");
		
		return selectKey;
	}
	
	
	/**
	 * 発行抑止コードリスト存在チェックを行います。
	 * 
	 * @param hakYoksiCd 発行抑止コード
	 * @return existFlg 存在判定フラグ
	 */
	private boolean hakYoksiCdExistChk(String hakYoksiCd)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][hakYoksiCdExistChk]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][hakYoksiCdExistChk][hakYoksiCd=" + hakYoksiCd + "]");

		// 存在判定フラグ
		boolean existFlg = false;
		
		for(int i = 0; i < hakYoksiCdList.size(); i++)
		{
			// 発行抑止コードリストに存在する場合
			if(hakYoksiCd.equals(hakYoksiCdList.get(i)))
			{
				existFlg = true;
				break;
			}
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][hakYoksiCdExistChk]");
		
		return existFlg;
	}
	
	// ANK-3983-00-00 ADD START
	/**
	 * ヘッダ部の出力をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * ヘッダ部の出力処理をします。<br>
	 *
	 * </pre>
	 * <p>
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void writeHeader() throws Exception
	{
		JBSbatOutputFileUtil out_obj = super.commonItem.getOutPutFile();
		StringBuffer header = new StringBuffer();

		header.append("\"請求月\",");
		header.append("\"項番\",");
		header.append("\"請求契約番号\",");
		header.append("\"請求書等発行抑止\",");
		header.append("\"合算請求抑止\",");
		header.append("\"強制窓口抑止\",");
		header.append("\"督促抑止\",");
		header.append("\"支払約束履行判定年月日\",");
		header.append("\"関連記事\"");


		
		// ヘッダ部の出力を行います。
		out_obj.write(header.toString());
	}
	// ANK-3983-00-00 ADD END

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CH_T_PRC_TAIOKRK.close();
		db_ZM_M_CD_NM_KANRI.close();
		// ANK-3235-00-00 ADD START
		db_CH_T_TOKUSOKU.close();
		// ANK-3235-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(CH_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求契約番号
	 *		 	料金対応記録種別詳細コード１
	 *		 	料金対応記録種別詳細コード２
	 *		 	料金対応記録種別詳細コード３
	 *		 	料金対応記録種別詳細コード４
	 *		 	料金対応記録種別詳細コード５
	 *		 	料金対応記録種別詳細コード６
	 *		 	料金対応記録種別詳細コード７
	 *		 	料金対応記録種別詳細コード８
	 *		 	// ANK-3983-00-00 DEL START
	 *		 	// 料金対応記録種別詳細コード９
	 *		 	// 料金対応記録種別詳細コード１０
	 *		 	// 料金対応記録種別詳細コード１１
	 *		 	// 料金対応記録種別詳細コード１２
	 *		 	// 料金対応記録種別詳細コード１３
	 *		 	// 料金対応記録種別詳細コード１４
	 *		 	// ANK-3983-00-00 DEL END

	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_PRC_TAIOKRK_CH_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());
		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());
		// ANK-3983-00-00 DEL START
		// paramList.setValue(param[9].toString());
		// paramList.setValue(param[10].toString());
		// paramList.setValue(param[11].toString());
		// paramList.setValue(param[12].toString());
		// paramList.setValue(param[13].toString());
		// paramList.setValue(param[14].toString());
		// ANK-3983-00-00 DEL END

		// DBアクセスを実行します
		db_CH_T_PRC_TAIOKRK.selectBySqlDefine(paramList, CH_T_PRC_TAIOKRK_CH_SELECT_001);
	}
	
	/**
	 * 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_CD_NM_KANRI_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_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_AC_SELECT_002);
	}

	// ANK-3235-00-00 ADD START	
	/**
	 * 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 executeCH_T_TOKUSOKU_CH_SELECT_019(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramListTokusoku = new JBSbatCommonDBInterface();
		paramListTokusoku.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CH_T_TOKUSOKU.selectBySqlDefine(paramListTokusoku, CH_T_TOKUSOKU_CH_SELECT_019);
	}
	// ANK-3235-00-00 ADD END
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	
	/**
	 * 改行を空文字に変換する。
	 * @param kiji 記事
	 * @return
	 */
	private String kaigyoDel(String kiji)
	{
		
		String kaigyoReplace = JACStrConst.KARA_MOJI;
		
		if(kiji != null)
		{
		
			kaigyoReplace = kiji.replaceAll(JACBatCommon.chgKaigyo(JACStrConst.LINE_CRLF)
																	, JACStrConst.KARA_MOJI);
		
		}
		return kaigyoReplace;
	}

}
