/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHSeikyusHakkoJudge
*	ソースファイル名	：JBSbatCHSeikyusHakkoJudge.java
*	作成者				：富士通　
*	作成日				：2011年08月19日
*＜機能概要＞
*　請求書発行判定部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*
*	v1.00.00	2011/08/19   富士通		新規作成
*	v3.00.00	2012/06/04	FJ)本多		【ANK-0024-04-00対応】前月以前の請求の有無を請求書出力の判定に用いる様、対応。
*	v3.01.00	2012/09/09	FJ)成田		【性能改善】前月・前々月以前の未納債権の存在の有無処理にて
*										            前月・前々月の請求年月をSQLで取得していたがバインドするように修正。
*	v4.00.00	2012/12/06	FJ)加島		【ST3-2012-0000430】窓口支払０円請求情報作成判定の条件を変更。
*	v4.01.01	2012/12/11	FJ)狭間		【ST4-2012-0000154】速度改善の為、getStringの呼出を削減する。
*	v4.01.02	2012/12/12	FJ)狭間		【ST4-2012-0000154】速度改善の為、マスタを分割読み込み。
*	v4.02.00	2012/12/12	FJ)今井		【ST3-2012-0000444】請求ステータス遷移箇所不備による売り上げオーソリチェック未抽出
*	v4.02.01	2013/01/08	FJ)狭間		【ST4-2013-0000057】テーブルアクセスクラス(請求)のクローズ漏れ及び前月請求有無検索SQL修正。
*	v4.02.02	2013/01/18  FJ)小柴		【内部管理番号-0000151】クレジット請求依頼・ゼロ円請求時編集不正
*	v4.02.03	2013/03/02	FJ)狭間		【ST4-2013-0000057】内部のDBアクセスをできるだけアンローダ化。
*	v4.02.04	2013/03/26	FJ)小柴		【内部管理番号-0000613】ファイル出力オブジェクト生成時のエンコード設定ずれ防止対応
*	v4.02.05	2013/04/05  FJ)小柴		【IKK-2013-0000783】文字化け対策のため、エンコード形式の変更
*	v4.02.06	2013/04/0x	FJ)小柴		【IT1-2013-0000858】強制窓口設定理由判定の条件修正
*	v4.02.07	2013/04/11	FJ)小柴		【】請求書作成フラグの再設定を行う処理を追加
*	v4.02.08	2013/04/16	FJ)小柴		【内部管理番号-0000313】窓口支払0円請求データの出力条件を修正
*	v4.02.09	2013/05/07	FJ)小柴		【内部管理番号-0000931】債権確定後に当月料金／領収が発生した際の結果リスト作成処理を追加
*	v4.02.10	2013/05/23	FJ)小柴		【TG1-2013-0000498,536,537,539】口座番号発行抑止判定の判定前条件を追加
*															請求書等発行抑止判定の結果出力を行うための条件判定を追加
*															内部管理0000931で追加した判定の条件を修正
*	v4.02.11	2013/05/29	FJ)小柴		【TG1-2013-0000533】窓口支払0円請求データの作成条件を修正
*															請求書作成フラグ=2の時の再設定条件を修正
*	v5.00		2013/07/10	FJ)小柴		【LT-2013-0000307】合算請求有無フラグ、前受金相殺有無フラグのいずれかが1の時、請求消費税額を0にする処理を追加
*	v5.01.00	2013/07/11	FJ)狭間		【IT1-2013-0001363】（水平展開）lineToObjectの第三引数適正化
*	v5.02		2013/07/26	FJ)小柴		【IT1-2013-0001453】請求書データ作成結果リストの関連項目を出力する処理を追加
*															請求書等発行抑止の出力条件を修正(60以下 → 62、または59以下)
*															当月請求、または領収がない場合に、請求書データ作成（債権確定後に当月請求／領収発生）を出力しないように修正
*															未使用変数、メソッドの削除、PGRelief対応
*	v5.03		2013/07/29	FJ)小柴		【IT1-2013-0001480】v4.02.11の窓口支払0円請求データ作成条件の再修正（請求書発行有無フラグを確認しないように修正）
*															口座番号発行抑止の判定時、請求書発行有無フラグを確認しないように修正
*	v5.04		2013/07/29	FJ)前田		【TG1-2013-0000930】請求契約配下契約状態が締結済の場合解約済と同様の処理となるように修正
*	v5.05		2013/11/07	FJ)伊藤		【OM-2013-0003870】当月請求指定ミスによる修正に対応
*	v5.06		2013/11/21	FJ)後藤		【OM-2013-0004389】領収消費税額マスク対応
*	v34.00.00	2017/09/14	FJ)清原		【ANK-3210-00-00】【eo電気】電気単独対応（STEP3）
*	v41.00.00	2019/05/21	FJ)麻生		【ST-2019-0000004】ＥＡＮバーコード種別コードが一部変更されていない
*	v57.00.00	2022/02/28	FJ)麻生		【ANK-3943-00-00】有効性NG時のインフォメーションコード追加
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JACbatRknBusinessUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCHbatSeikyKaknoBusinessUtil;
import eo.business.util.file.JBSbatCHIFM172;
import eo.business.util.file.JBSbatCHIFM086;
import eo.business.util.file.JBSbatCHIFM286;
import eo.business.util.file.JBSbatCHIFM406;
import eo.business.util.table.JBSbatCH_M_PRC_KMK_CS_CHGE;
import eo.business.util.table.JBSbatCH_M_SKS_OPUT_CTRL;
import eo.business.util.table.JBSbatCH_M_YOKSI_PTN_TEIGI;
import eo.business.util.table.JBSbatCH_T_SEIKY_UCWK;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCHStringUtil;
import eo.common.util.JPCUtilCommon;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

/**
 * 請求書発行判定<p>
 *<BR>
 * @author 富士通
 */
public class JBSbatCHSeikyusHakkoJudge extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(抑止パターン定義)*/
	private static final String D_TBL_NAME_CH_M_YOKSI_PTN_TEIGI = "CH_M_YOKSI_PTN_TEIGI";

	/** テーブル(請求書出力制御)*/
	private static final String D_TBL_NAME_CH_M_SKS_OPUT_CTRL = "CH_M_SKS_OPUT_CTRL";

	/** テーブル(請求内訳)*/
	private static final String D_TBL_NAME_CH_T_SEIKY_UCWK = "CH_T_SEIKY_UCWK";
	
	/** テーブル(請求項目抽出変換)*/
	private static final String D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE = "CH_M_PRC_KMK_CS_CHGE";

	/** SQL定義キー(CH_SELECT_001)*/
	private static final String CH_M_YOKSI_PTN_TEIGI_CH_SELECT_001 = "CH_SELECT_001";

	/** SQL定義キー(CH_SELECT_001)*/
	private static final String CH_M_SKS_OPUT_CTRL_CH_SELECT_001 = "CH_SELECT_001";

	/** SQL定義キー(CH_SELECT_006)*/
	private static final String CH_T_SEIKY_UCWK_CH_SELECT_006 = "CH_SELECT_006";
	
	/** SQL定義キー(CH_SELECT_019)*/
	private static final String CH_T_SEIKY_UCWK_CH_SELECT_019 = "CH_SELECT_019";
	
	/** SQL定義キー(AC_SELECT_008)*/
	private static final String CH_M_PRC_KMK_CS_CHGE_AC_SELECT_008 = "AC_SELECT_008";

	/** テーブルアクセスクラス(抑止パターン定義)*/
	private JBSbatSQLAccess db_CH_M_YOKSI_PTN_TEIGI = null;

	/** テーブルアクセスクラス(請求書出力制御)*/
	private JBSbatSQLAccess db_CH_M_SKS_OPUT_CTRL = null;

	/** テーブルアクセスクラス(請求内訳)*/
	private JBSbatSQLAccess db_CH_T_SEIKY_UCWK = null;
	
	/** テーブルアクセスクラス(請求内訳)*/
	private JBSbatSQLAccess db_CH_T_SEIKY_UCWK2 = null;
	
	/** テーブルアクセスクラス(請求項目抽出変換)*/
	private JBSbatSQLAccess db_CH_M_PRC_KMK_CS_CHGE = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 分割用ファイル区分（請求データ） */
	private static final String FILE_DIV_SEIKY_DATA = "1";
	
	/** 分割用ファイル区分（抑止情報） */
	private static final String FILE_DIV_YOKSI_INFO = "2";
	
	/** 分割用ファイル区分（窓口支払０円請求情報） */
	private static final String FILE_DIV_MDGC_ZERO_YEN_SEIKY_INFO = "3";
	
	/** 分割用ファイル区分（請求書データ作成結果情報） */
	private static final String FILE_DIV_SEIKYUS_DATA_SAKSEI_RSLT_INFO = "4";
	
	/** 抑止パターン定義取得結果のマップキー（抑止コード数） */
	private static final String CNT_YOKSI_CD = "CNT_YOKSI_CD";
	
	/** 無視項目（請求金額合計（自）） */
	private static final String MUSI_SIKY_AMNT_TOTAL_JI = "-999999999999";

	/** 無視項目（請求金額合計（至）） */
	private static final String MUSI_SIKY_AMNT_TOTAL_ITA = "999999999999";

	/** フラグ（無） */
	private static final String FLG_OFF = "0";
	
	/** フラグ（有） */
	private static final String FLG_ON = "1";
	
	// ST-2019-0000004 ADD START
	/** ＥＡＮバーコード種別コード（通常） */
	private static final String EAN_BARCODE_SBT_CD_NORMAL = "01";
	
	/** ＥＡＮバーコード種別コード（リアル） */
	private static final String EAN_BARCODE_SBT_CD_REAL = "02";
	// ST-2019-0000004 ADD END
	
	/** 判定対象抑止コードリスト */
	private List<String> trgtYoksiCdList = null;
	
	/** 抑止パターン定義マップ */
	private Map<List<String>, String> yoksiPtnTeigiMap = null;
	
	/** 抑止コードリスト */
	private List<String> yoksiCdList = null;
	
	/** 請求書出力制御情報リスト */
	private List<HashMap<String, String>> sksOputCtrlInfoList1 = new ArrayList<HashMap<String, String>>();
	private List<HashMap<String, String>> sksOputCtrlInfoList2 = new ArrayList<HashMap<String, String>>();
	private List<HashMap<String, String>> sksOputCtrlInfoList3 = new ArrayList<HashMap<String, String>>();
	private List<HashMap<String, String>> sksOputCtrlInfoList4 = new ArrayList<HashMap<String, String>>();
	
	// ST-2019-0000004 ADD START
	/** 請求書出力制御情報マップ（リアル用） */
	private HashMap<Integer, HashMap<String, String>> sksOputCtrlInfoMap1 = new HashMap<Integer, HashMap<String, String>>();
	// ST-2019-0000004 ADD END
	
	/** 請求書作成フラグ */
	private String seikyusSakseiFlg = null;
	
	/** 業務機能識別コード（請求書データ作成） */
	private String workKinoSkbtCd = null;
	
	/** 抑止業務コード */
	private String yksGyoumuCd = JACStrConst.KARA_MOJI;
	
	/** 当月発生債権有無 */
	private String tgtSknUm = JACStrConst.KARA_MOJI;
	
	/** 前回請求契約番号 */
	private String prvSeiKeiNo = JACStrConst.KARA_MOJI;

	/** 前月未納債権有無 */
	private String prvMnoSknUm = JACStrConst.KARA_MOJI;
	
	/** 前々月未納債権有無 */
	private String prvBfMnoSknUm = JACStrConst.KARA_MOJI;
	
	/** 当月 */
	private String togetsu = null;
	
	/** 請求年月(前月) */
	private String zengetsu = null;
	
	/** 請求年月(前々月) */
	private String zenzengetsu = null;
	
	/** 前月以前請求有無 */
	private String tempZenSeikyUmu = null;
	
	/** 半角スペース */
	private String halfSp1 = " ";
	
	/** 請求額マイナスフラグ */
	private boolean isMinus = false;
	
	/** 抑止業務コード取得用キー（該当データなし用） */
	private List<String> nonKeyList = null;
	
	/** 請求契約番号 */
	private String inMapSeikyKeiNo = null;
	
	/** 請求方法コード */
	private String inMapSeikyWayCd = null;
	
	/** 金融機関コード */
	private String inMapBankCd = null;
	
	/** 金融機関支店コード */
	private String inMapBankShitenCd = null;
	
	/** 預金種目コード */
	private String inMapYokinShumokuCd = null;
	
	/** 口座番号 */
	private String inMapKozaNo = null;
	
	/** 金融機関名 */
	private String inMapBankNm = null;
	
	/** 金融機関支店名 */
	private String inMapBankShitenNm = null;
	
	/** 口座科目名 */
	private String inMapKozaKamokuNm = null;
	
	/** 領収金融機関コード */
	private String inMapReceiptBankCd = null;
	
	/** 領収金融機関支店コード */
	private String inMapReceiptBankShitenCd = null;
	
	/** 領収口座種別コード */
	private String inMapReceiptKozaSbtCd = null;
	
	/** 領収口座番号 */
	private String inMapReceiptKozaNo = null;
	
	/** 領収金融機関名 */
	private String inMapReceiptBankNm = null;
	
	/** 領収金融機関支店名 */
	private String inMapReceiptBankShitenNm = null;
	
	/** 領収口座科目名 */
	private String inMapReceiptKozaKamokuNm = null;
	
	/** レコード区分 */
	private String inMapRecDiv = null;
	
	/** 当月請求有無 */
	private String inMapTogtuSikyUm = null;
	
	/** 領収有無 */
	private String inMapReceiptUm = null;
	
	/** 領収証泣き別れ有無 */
	private String inMapReceiptNakiwakareUm = null;
	
	/** 督促有無 */
	private String inMapTokusokuUm = null;
	
	/** 請求書発行要否 */
	private String inMapSeikyusHakkoYh = null;
	
	/** 請求契約配下サービス契約状態コード */
	private String inMapSkhkSvkeiStatCd = null;
	
	/** 請求契約配下サービス契約解約理由識別コード */
	private String inMapSkhkSvkeiDlreSkbtCd = null;
	
	/** 強制窓口フラグ */
	private String inMapKyoseiMadoguchiFlg = null;
	
	/** 合算請求有無フラグ */
	private String inMapGsanSeikyUmFlg = null;
	
	/** 前受金相殺有無フラグ */
	private String inMapMaeukkinSosaiUmFlg = null;
	
	/** 通話明細発行有無フラグ */
	private String inMapTwDtlHakUmFlg = null;
	
	/** 請求テーブル更新有無フラグ */
	private String inMapSeikyTableUpdUmFlg = null;
	
	/** 請求方法変更フラグ */
	private String inMapSeikyWayChgFlg = null;
	
	/** 同封コード */
	private String inMapDofuCd = null;
	
	/** 請求番号 */
	private String inMapSeikyNo = null;
	
	/** 請求年月 */
	private String inMapSeikyYm = null;
	
	/** 支払方法コード */
	private String inMapPayWayCd = null;
	
	/** 申込時支払方法 */
	private String inMapMskmPayWay = null;
	
	/** 収納代行会社コード */
	private String inMapShnodkcmpCd = null;
	
	/** 送付先郵便番号 */
	private String inMapSohusPcd = null;
	
	/** 送付先都道府県名 */
	private String inMapSohusStateNm = null;
	
	/** 送付先市区町村名 */
	private String inMapSohusCityNm = null;
	
	/** 送付先大字通称名 */
	private String inMapSohusOaztsuNm = null;
	
	/** 送付先字丁目名 */
	private String inMapSohusAzchoNm = null;
	
	/** 送付先住所番地号 */
	private String inMapSohusBnchigo = null;
	
	/** 送付先住所補記・建物名 */
	private String inMapSohusAdrttm = null;
	
	/** 送付先住所補記・部屋番号 */
	private String inMapSohusAdrrm = null;
	
	/** 送付先名 */
	private String inMapSohusNm = null;
	
	/** 送付先部課名 */
	private String inMapSohusBkm = null;
	
	/** 送付先担当名 */
	private String inMapSohusTntshaNm = null;
	
	/** クレジット会社コード */
	private String inMapCrecardCompCd = null;
	
	/** クレジット交換コード */
	private String inMapCreditKokanCd = null;
	
	/** クレジットカード番号 */
	private String inMapCrecardNo = null;
	
	/** クレジットカード名義人名 */
	private String inMapCrecardMeigin = null;
	
	/** クレジット会社名 */
	private String inMapCrecardCompNm = null;
	
	/** オーソリ結果フラグ */
	private String inMapAuthoriRsltFlg = null;
	
	/** 請求金額 */
	private BigDecimal inMapSeikyAmnt = null;
	
	/** 請求消費税額 */
	private BigDecimal inMapSeikyStaxAmnt = null;
	
	/** 利用期間開始日 */
	private String inMapUsePrdStaYmd = null;
	
	/** 利用期間終了日 */
	private String inMapUsePrdEndYmd = null;
	
	/** 支払期限年月日 */
	private String inMapPayKigenYmd = null;
	
	/** 領収請求番号 */
	private String inMapReceiptSeikyNo = null;
	
	/** 領収方法 */
	private String inMapReceiptWay = null;
	
	/** 領収月 */
	private String inMapReceiptYm = null;
	
	/** 領収年月日 */
	private String inMapReceiptYmd = null;
	
	/** 領収金額 */
	private BigDecimal inMapReceiptAmnt = null;
	
	/** 領収消費税額 */
	private BigDecimal inMapReceiptStaxAmnt = null;
	
	/** 督促ステータス */
	private String inMapTokusokuStat = null;
	
	/** 請求時請求方法コード */
	private String inMapSikyJiSikyWayCd = null;

	/** 前月請求フラグ */
	private String inMapZgtSeikyFlg = null;

	/** 当月債権額 */
	private String inMapTgtSaikenAmnt = null;

	/** 前月未納債権フラグ */
	private String inMapZgtMnSaikenFlg = null;

	/** 前々月未納債権フラグ */
	private String inMapZZgtMnSaikenFlg = null;
	
	/** 前月請求方法コード */
	private String inMapZgtSeikyWayCd = null;
	
	/** 前月口座振替結果コード */
	private String inMapZgtKhriRsltCd = null;
	
	/** 口座ステータス */
	private String inMapKozaStat = null;
	
	/** 請求方法適用調整年月日 */
	private String inMapSeikyWayAplyAdjYmd = null;
	
	/** フロアリミット超過フラグ */
	private String inMapFloorLimitChokaFlg = null;
	
	/** 当月請求額 */
	private String inMapTgtSeikyAmnt = null;
	
	/** 前月前受金充当額 */
	private String inMapZgtMaeAmnt = null;
	
	/** 前月未収額 */
	private String inMapZgtMiAmnt = null;
	
	// v57.00.00 ANK-3943-00-00 ADD START
	/** クレジット有効性ＮＧフラグ */
	private String inMapCreditYukoseiNgFlg = null;
	// v57.00.00 ANK-3943-00-00 ADD END

	/** フリー項目情報格納用配列 */
	private String[] fleeItemArray = null;

	/** 請求抑止チェック先データ定義マップ */
	private Map<String, List<String>> chkKK0541Map = null;

	/** 銀行コード（固定値） */
	private static final String receiptBankCdDef = "****";

	/** 店舗コード（固定値） */
	private static final String receiptBankShitenCdDef = "***";

	/** 口座科目（固定値） */
	private static final String receiptKozaSbtCdDef = "*";

	/** 口座番号（固定値） */
	private static final String receiptKozaNoDef = "*******";

	/** 銀行名（固定値） */
	private static final String receiptBankNmDef = "＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊";

	/** 店舗名（固定値） */
	private static final String receiptBankShitenNmDef = "＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊";

	/** 口座科目名（固定値） */
	private static final String receiptKozaKamokuNmDef = "＊＊";
	
	/** 料金項目コード(合算請求作成（当月未収額）) */
	private String workGsanMishu = null;
	
	//v34.00.00 Add Start
	/** ｅｏ電気インフォメーションパターンコード */
	private String eoElecInfoPatCd = null;
	
	/** ｅｏ電気同封物パターンコード */
	private String eoElecDhbtPatCd = null;
	
	/** ｅｏ電気抑止コード対象外リスト */
	private List<String> eoElecyoksiCdList = null;
	
	/** ｅｏ電気単独請求先リスト */
	private HashSet<String> eoelecOnlySkskMap = null;
	//v34.00.00 Add End
	/**
	 * 初期処理
	 * @param commonItem バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CH_M_YOKSI_PTN_TEIGI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_YOKSI_PTN_TEIGI);
		db_CH_M_SKS_OPUT_CTRL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_SKS_OPUT_CTRL);
		db_CH_T_SEIKY_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_SEIKY_UCWK);
		db_CH_T_SEIKY_UCWK2 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_SEIKY_UCWK);
		db_CH_M_PRC_KMK_CS_CHGE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][freeItem=" + super.freeItem + "]");
		
		// フリー項目情報を取得
		fleeItemArray = super.freeItem.split(JACStrConst.FREE_DIV);

		// 請求抑止チェック先データマップの作成
		makeChkKK0541Map();

		//v34.00.00 Add Start
		// 電気単独データマップの作成
		makeEoelecOnlyMap();
		//v34.00.00 Add End
		
		// 業務機能識別コード（請求書データ作成）取得
		JACbatParamUtil paramUtil = new JACbatParamUtil(commonItem);
		this.workKinoSkbtCd = paramUtil.getGyoumuParameter(JACStrConst.WKPRA_CH_WKS_SKS_DATA_MAKE);
		String workTogetsuMishu = paramUtil.getGyoumuParameter(JACStrConst.WKPRA_CH_WKS_GSN_SKY_TG_MI);
		
		//v34.00.00 Add Start
		// 請求書出力判定＿連絡先なしｅｏ電気単独契約＿インフォメーションパターンコード取得
		this.eoElecInfoPatCd = paramUtil.getGyoumuParameter(JACStrConst.WKPRA_CH_ELEC_INFO_PAT_CD);
		
		// 請求書出力判定＿連絡先なしｅｏ電気単独契約＿同封物パターンコード取得
		this.eoElecDhbtPatCd = paramUtil.getGyoumuParameter(JACStrConst.WKPRA_CH_ELEC_DHBT_PAT_CD);
		
		// 請求書出力判定＿連絡先なしｅｏ電気単独契約＿対象外＿抑止業務パターンコード取得
		String eoElecDhbtPatCd = paramUtil.getGyoumuParameter(JACStrConst.WKPRA_CH_CH_ELEC_YKSI_PTN_CD);
		
		//v34.00.00 Add End
		
		paramUtil.close();
		
		// 抑止パターン定義情報取得
		List<Map<String, String>> yoksiPtnTeigiInfoList = this.selectYoksiPtnTeigiInfoList(this.workKinoSkbtCd);
		
		// 判定対象抑止コードリスト作成
		this.trgtYoksiCdList = this.makeTrgtYoksiCdList(yoksiPtnTeigiInfoList);
		
		// 抑止パターン定義マップ作成
		this.yoksiPtnTeigiMap = this.makeYoksiPtnTeigiMap(yoksiPtnTeigiInfoList);
		
		// 請求書出力制御情報取得
		this.selectSksOputCtrlInfo();
		
		// 抑止業務コード取得用キー作成（該当データなし用）
		this.nonKeyList = new ArrayList<String>();
		this.nonKeyList.add(JACStrConst.SEIKY_YOKSI_CD_SP);
		
		// 当月取得
		this.setTogetsu();
		
		// 請求年月(前月)を取得
		this.zengetsu = JBSbatDateUtil.adjustMonth(this.togetsu + JACStrConst.STR_OF_MONTH, -1);
		// YYYYMMDD から YYYYMM に変更
		this.zengetsu = this.zengetsu.substring(0, this.zengetsu.length() - JACStrConst.STR_OF_MONTH.length());
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][zengetsu=" + this.zengetsu + "]");
		
		// 請求年月(前々月)を取得
		this.zenzengetsu = JBSbatDateUtil.adjustMonth(this.togetsu + JACStrConst.STR_OF_MONTH, -2);
		// YYYYMMDD から YYYYMM に変更
		this.zenzengetsu = this.zenzengetsu.substring(0, this.zenzengetsu.length() - JACStrConst.STR_OF_MONTH.length());
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][zenzengetsu=" + this.zenzengetsu + "]");
		
		// 料金項目コードの取得
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		dbList.setValue(super.systemCode);
		dbList.setValue(workTogetsuMishu);
		dbList.setValue(JACStrConst.CHSHT_CHG_CD_CST);
		dbList.setValue(super.opeDate);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][" + dbList.getList().toString() + "]");
		
		executeCH_M_PRC_KMK_CS_CHGE_AC_SELECT_008(dbList.getList().toArray());
		
		workGsanMishu = db_CH_M_PRC_KMK_CS_CHGE.selectNext().getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PRC_KMK_CD);
		
		//v34.00.00 Add Start
		// ｅｏ電気抑止コードリストの作成
		setEoElecyoksiCdList(eoElecDhbtPatCd);
		//v34.00.00 Add End
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 請求抑止チェックデータファイルの作成を行います
	 * @throws Exception
	 */
	private void makeChkKK0541Map() throws Exception
	{
		// 請求抑止チェックデータファイルオブジェクト
		JBSbatInputFileUtil inFileObj = null;
		String preSeikyKeiNo = null;
		List<String> bufSeikyYoksiCdList = new ArrayList<String>();
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeChkKK0541Map]");
		
		chkKK0541Map = new HashMap<String, List<String>>();
		
		// ファイルオープン
		inFileObj = new JBSbatInputFileUtil(fleeItemArray[0]);
		
		JBSbatDefFileUtil defFileUtl =
			new JBSbatDefFileUtil(JBSbatAplConst.getAplConstValue("IND") + fleeItemArray[1], inFileObj);
		inFileObj.setEncode(JACStrConst.ENCODE_MS932);
		inFileObj.createReader();
		
		while(true)
		{
			// １行読み込み
			String lineDate = inFileObj.readLine();
			if(null == lineDate)
			{
				break;
			}
			// DEFファイルを使用し、入力データを分割
			JBSbatServiceInterfaceMap recMap = defFileUtl.lineToObject(lineDate, inFileObj, 0);
			String inSeikyKeiNo = recMap.getString(JBSbatCHIFM172.SEIKY_KEI_NO);
			String inSeikyYoksiCd = recMap.getString(JBSbatCHIFM172.SEIKY_YOKSI_CD);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeChkKK0541Map][preSeikyKeiNo=" + preSeikyKeiNo + ":inSeikyKeiNo=" + inSeikyKeiNo + ":inSeikyYoksiCd=" + inSeikyYoksiCd + "]");
			if(null != preSeikyKeiNo)
			{
				if(!inSeikyKeiNo.equals(preSeikyKeiNo))
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeChkKK0541Map][bufSeikyYoksiCdList=" + bufSeikyYoksiCdList.toString() + "]");
					chkKK0541Map.put(preSeikyKeiNo, bufSeikyYoksiCdList);
					bufSeikyYoksiCdList = new ArrayList<String>();
				}
				
			}
			bufSeikyYoksiCdList.add(inSeikyYoksiCd);
			preSeikyKeiNo = inSeikyKeiNo;
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeChkKK0541Map][bufSeikyYoksiCdList=" + bufSeikyYoksiCdList.toString() + "]");
		}
		if(null != preSeikyKeiNo)
		{
			chkKK0541Map.put(preSeikyKeiNo, bufSeikyYoksiCdList);
		}
		// ファイルクローズ
		inFileObj.close();
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeChkKK0541Map]");
	}
	
	//v34.00.00 Add Start

	/**
	 * ｅｏ電気単独契約請求先リストの作成を行います
	 * @throws Exception
	 */
	private void makeEoelecOnlyMap() throws Exception
	{
		// ｅｏ電気単独契約請求先リストファイルオブジェクト
		JBSbatInputFileUtil inFileObj = null;
		String inSeikyKeiNo = null;
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeEoelecOnlyMap]");
		
		eoelecOnlySkskMap = new HashSet<String>();
		
		// ファイルオープン
		inFileObj = new JBSbatInputFileUtil(fleeItemArray[2]);
		
		JBSbatDefFileUtil defFileUtl =
			new JBSbatDefFileUtil(JBSbatAplConst.getAplConstValue("IND") + fleeItemArray[3], inFileObj);
		inFileObj.setEncode(JACStrConst.ENCODE_MS932);
		inFileObj.createReader();
		
		while(true)
		{
			// １行読み込み
			String lineDate = inFileObj.readLine();
			if(null == lineDate)
			{
				break;
			}
			// DEFファイルを使用し、入力データを分割
			JBSbatServiceInterfaceMap recMap = defFileUtl.lineToObject(lineDate, inFileObj, 0);
			inSeikyKeiNo = recMap.getString(JBSbatCHIFM286.SEIKY_KEI_NO);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeEoelecOnlyMap][inSeikyKeiNo=" + inSeikyKeiNo + "]");
			if(null != inSeikyKeiNo)
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeEoelecOnlyMap][inSeikyKeiNo=" + inSeikyKeiNo + "]");
				eoelecOnlySkskMap.add(inSeikyKeiNo);
				
			}
		}
		// ファイルクローズ
		inFileObj.close();
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeEoelecOnlyMap]");
	}
	//v34.00.00 Add End

	
	/**
	 * 主処理
	 * @param inMap 入力電文
	 * @return JBSbatOutputItem 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert 	inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][inMap=" + inMap.getMap().toString() + "]") : true;
		
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
				
		// v57.00.00 ANK-3943-00-00 MOD START
//		// 請求契約番号
//		inMapSeikyKeiNo = inMap.getString(JBSbatCHIFM171.SEIKY_KEI_NO);
//		// 請求方法コード
//		inMapSeikyWayCd = inMap.getString(JBSbatCHIFM171.SEIKY_WAY_CD);
//		// 金融機関コード
//		inMapBankCd = inMap.getString(JBSbatCHIFM171.BANK_CD);
//		// 金融機関支店コード
//		inMapBankShitenCd = inMap.getString(JBSbatCHIFM171.BANK_SHITEN_CD);
//		// 預金種目コード
//		inMapYokinShumokuCd = inMap.getString(JBSbatCHIFM171.YOKIN_SHUMOKU_CD);
//		// 口座番号
//		inMapKozaNo = inMap.getString(JBSbatCHIFM171.KOZA_NO);
//		// 金融機関名
//		inMapBankNm = inMap.getString(JBSbatCHIFM171.BANK_NM);
//		// 金融機関支店名
//		inMapBankShitenNm = inMap.getString(JBSbatCHIFM171.BANK_SHITEN_NM);
//		// 口座科目名
//		inMapKozaKamokuNm = inMap.getString(JBSbatCHIFM171.KOZA_KAMOKU_NM);
//		// 口座科目名
//		inMapReceiptBankCd = inMap.getString(JBSbatCHIFM171.RECEIPT_BANK_CD);
//		// 口座科目名
//		inMapReceiptBankShitenCd = inMap.getString(JBSbatCHIFM171.RECEIPT_BANK_SHITEN_CD);
//		// 口座科目名
//		inMapReceiptKozaSbtCd = inMap.getString(JBSbatCHIFM171.RECEIPT_KOZA_SBT_CD);
//		// 口座科目名
//		inMapReceiptKozaNo = inMap.getString(JBSbatCHIFM171.RECEIPT_KOZA_NO);
//		// 口座科目名
//		inMapReceiptBankNm = inMap.getString(JBSbatCHIFM171.RECEIPT_BANK_NM);
//		// 口座科目名
//		inMapReceiptBankShitenNm = inMap.getString(JBSbatCHIFM171.RECEIPT_BANK_SHITEN_NM);
//		// 口座科目名
//		inMapReceiptKozaKamokuNm = inMap.getString(JBSbatCHIFM171.RECEIPT_KOZA_KAMOKU_NM);
//		// レコード区分/
//		inMapRecDiv = inMap.getString(JBSbatCHIFM171.REC_DIV);
//		// 当月請求有無
//		inMapTogtuSikyUm = inMap.getString(JBSbatCHIFM171.TOGTU_SIKY_UM);
//		// 領収有無
//		inMapReceiptUm = inMap.getString(JBSbatCHIFM171.RECEIPT_UM);
//		// 領収証泣き別れ有無
//		inMapReceiptNakiwakareUm = inMap.getString(JBSbatCHIFM171.RECEIPT_NAKIWAKARE_UM);
//		// 督促有無
//		inMapTokusokuUm = inMap.getString(JBSbatCHIFM171.TOKUSOKU_UM);
//		// 請求書発行要否
//		inMapSeikyusHakkoYh = inMap.getString(JBSbatCHIFM171.SEIKYUS_HAKKO_YH);
//		
//		// 請求契約配下サービス契約状態コードが"030"(締結済み)なら910（解約済）にする
//		String chgSkhkSvkeiStatCd = inMap.getString(JBSbatCHIFM171.SKHK_SVKEI_STAT_CD);
		
		// 請求契約番号
		inMapSeikyKeiNo = inMap.getString(JBSbatCHIFM406.SEIKY_KEI_NO);
		// 請求方法コード
		inMapSeikyWayCd = inMap.getString(JBSbatCHIFM406.SEIKY_WAY_CD);
		// 金融機関コード
		inMapBankCd = inMap.getString(JBSbatCHIFM406.BANK_CD);
		// 金融機関支店コード
		inMapBankShitenCd = inMap.getString(JBSbatCHIFM406.BANK_SHITEN_CD);
		// 預金種目コード
		inMapYokinShumokuCd = inMap.getString(JBSbatCHIFM406.YOKIN_SHUMOKU_CD);
		// 口座番号
		inMapKozaNo = inMap.getString(JBSbatCHIFM406.KOZA_NO);
		// 金融機関名
		inMapBankNm = inMap.getString(JBSbatCHIFM406.BANK_NM);
		// 金融機関支店名
		inMapBankShitenNm = inMap.getString(JBSbatCHIFM406.BANK_SHITEN_NM);
		// 口座科目名
		inMapKozaKamokuNm = inMap.getString(JBSbatCHIFM406.KOZA_KAMOKU_NM);
		// 口座科目名
		inMapReceiptBankCd = inMap.getString(JBSbatCHIFM406.RECEIPT_BANK_CD);
		// 口座科目名
		inMapReceiptBankShitenCd = inMap.getString(JBSbatCHIFM406.RECEIPT_BANK_SHITEN_CD);
		// 口座科目名
		inMapReceiptKozaSbtCd = inMap.getString(JBSbatCHIFM406.RECEIPT_KOZA_SBT_CD);
		// 口座科目名
		inMapReceiptKozaNo = inMap.getString(JBSbatCHIFM406.RECEIPT_KOZA_NO);
		// 口座科目名
		inMapReceiptBankNm = inMap.getString(JBSbatCHIFM406.RECEIPT_BANK_NM);
		// 口座科目名
		inMapReceiptBankShitenNm = inMap.getString(JBSbatCHIFM406.RECEIPT_BANK_SHITEN_NM);
		// 口座科目名
		inMapReceiptKozaKamokuNm = inMap.getString(JBSbatCHIFM406.RECEIPT_KOZA_KAMOKU_NM);
		// レコード区分/
		inMapRecDiv = inMap.getString(JBSbatCHIFM406.REC_DIV);
		// 当月請求有無
		inMapTogtuSikyUm = inMap.getString(JBSbatCHIFM406.TOGTU_SIKY_UM);
		// 領収有無
		inMapReceiptUm = inMap.getString(JBSbatCHIFM406.RECEIPT_UM);
		// 領収証泣き別れ有無
		inMapReceiptNakiwakareUm = inMap.getString(JBSbatCHIFM406.RECEIPT_NAKIWAKARE_UM);
		// 督促有無
		inMapTokusokuUm = inMap.getString(JBSbatCHIFM406.TOKUSOKU_UM);
		// 請求書発行要否
		inMapSeikyusHakkoYh = inMap.getString(JBSbatCHIFM406.SEIKYUS_HAKKO_YH);
		
		// 請求契約配下サービス契約状態コードが"030"(締結済み)なら910（解約済）にする
		String chgSkhkSvkeiStatCd = inMap.getString(JBSbatCHIFM406.SKHK_SVKEI_STAT_CD);
		// v57.00.00 ANK-3943-00-00 MOD END
		
		if(chgSkhkSvkeiStatCd.equals(JACStrConst.SKHK_SVKEI_STAT_CD_TIKT))
		{
			chgSkhkSvkeiStatCd = JACStrConst.SKHK_SVKEI_STAT_CD_DSL;
		}
		
		// 請求契約配下サービス契約状態コード
		inMapSkhkSvkeiStatCd = chgSkhkSvkeiStatCd;
		// v57.00.00 ANK-3943-00-00 MOD START
//		// 請求契約配下サービス契約解約理由識別コード
//		inMapSkhkSvkeiDlreSkbtCd = inMap.getString(JBSbatCHIFM171.SKHK_SVKEI_DLRE_SKBT_CD);
//		// 強制窓口フラグ
//		inMapKyoseiMadoguchiFlg = inMap.getString(JBSbatCHIFM171.KYOSEI_MADOGUCHI_FLG);
//		// 合算請求有無フラグ
//		inMapGsanSeikyUmFlg = inMap.getString(JBSbatCHIFM171.GSAN_SEIKY_UM_FLG);
//		// 前受金相殺有無フラグ
//		inMapMaeukkinSosaiUmFlg = inMap.getString(JBSbatCHIFM171.MAEUKKIN_SOSAI_UM_FLG);
//		// 通話明細発行有無フラグ
//		inMapTwDtlHakUmFlg = inMap.getString(JBSbatCHIFM171.TW_DTL_HAK_UM_FLG);
//		// 請求テーブル更新有無フラグ
//		inMapSeikyTableUpdUmFlg = inMap.getString(JBSbatCHIFM171.SEIKY_TABLE_UPD_UM_FLG);
//		// 請求方法変更フラグ
//		inMapSeikyWayChgFlg = inMap.getString(JBSbatCHIFM171.SEIKY_WAY_CHG_FLG);
//		// 同封コード
//		inMapDofuCd = inMap.getString(JBSbatCHIFM171.DOFU_CD);
//		// 請求番号
//		inMapSeikyNo = inMap.getString(JBSbatCHIFM171.SEIKY_NO);
//		// 請求年月
//		inMapSeikyYm = inMap.getString(JBSbatCHIFM171.SEIKY_YM);
//		// 支払方法コード
//		inMapPayWayCd = inMap.getString(JBSbatCHIFM171.PAY_WAY_CD);
//		// 申込時支払方法
//		inMapMskmPayWay = inMap.getString(JBSbatCHIFM171.MSKM_PAY_WAY);
//		// 収納代行会社コード
//		inMapShnodkcmpCd = inMap.getString(JBSbatCHIFM171.SHNODKCMP_CD);
//		// 送付先郵便番号
//		inMapSohusPcd = inMap.getString(JBSbatCHIFM171.SOHUS_PCD);
//		// 送付先都道府県名
//		inMapSohusStateNm = inMap.getString(JBSbatCHIFM171.SOHUS_STATE_NM);
//		// 送付先市区町村名
//		inMapSohusCityNm = inMap.getString(JBSbatCHIFM171.SOHUS_CITY_NM);
//		// 送付先大字通称名
//		inMapSohusOaztsuNm = inMap.getString(JBSbatCHIFM171.SOHUS_OAZTSU_NM);
//		// 送付先字丁目名
//		inMapSohusAzchoNm = inMap.getString(JBSbatCHIFM171.SOHUS_AZCHO_NM);
//		// 送付先住所番地号
//		inMapSohusBnchigo = inMap.getString(JBSbatCHIFM171.SOHUS_BNCHIGO);
//		// 送付先住所補記・建物名
//		inMapSohusAdrttm = inMap.getString(JBSbatCHIFM171.SOHUS_ADRTTM);
//		// 送付先住所補記・部屋番号
//		inMapSohusAdrrm = inMap.getString(JBSbatCHIFM171.SOHUS_ADRRM);
//		// 送付先名
//		inMapSohusNm = inMap.getString(JBSbatCHIFM171.SOHUS_NM);
//		// 送付先部課名
//		inMapSohusBkm = inMap.getString(JBSbatCHIFM171.SOHUS_BKM);
//		// 送付先担当名
//		inMapSohusTntshaNm = inMap.getString(JBSbatCHIFM171.SOHUS_TNTSHA_NM);
//		// クレジット会社コード
//		inMapCrecardCompCd = inMap.getString(JBSbatCHIFM171.CRECARD_COMP_CD);
//		// クレジット交換コード
//		inMapCreditKokanCd = inMap.getString(JBSbatCHIFM171.CREDIT_KOKAN_CD);
//		// クレジットカード番号
//		inMapCrecardNo = inMap.getString(JBSbatCHIFM171.CRECARD_NO);
//		// クレジットカード名義人名
//		inMapCrecardMeigin = inMap.getString(JBSbatCHIFM171.CRECARD_MEIGIN);
//		// クレジット会社名
//		inMapCrecardCompNm = inMap.getString(JBSbatCHIFM171.CRECARD_COMP_NM);
//		// オーソリ結果フラグ
//		inMapAuthoriRsltFlg = inMap.getString(JBSbatCHIFM171.AUTHORI_RSLT_FLG);
//		// 請求金額
//		inMapSeikyAmnt = inMap.getBigDecimal(JBSbatCHIFM171.SEIKY_AMNT);
//		// 請求消費税額
//		inMapSeikyStaxAmnt = inMap.getBigDecimal(JBSbatCHIFM171.SEIKY_STAX_AMNT);
//		// 利用期間開始日
//		inMapUsePrdStaYmd = inMap.getString(JBSbatCHIFM171.USE_PRD_STA_YMD);
//		// 利用期間終了日
//		inMapUsePrdEndYmd = inMap.getString(JBSbatCHIFM171.USE_PRD_END_YMD);
//		// 支払期限年月日
//		inMapPayKigenYmd = inMap.getString(JBSbatCHIFM171.PAY_KIGEN_YMD);
//		// 領収請求番号
//		inMapReceiptSeikyNo = inMap.getString(JBSbatCHIFM171.RECEIPT_SEIKY_NO);
//		// 領収方法
//		inMapReceiptWay = inMap.getString(JBSbatCHIFM171.RECEIPT_WAY);
//		// 領収月
//		inMapReceiptYm = inMap.getString(JBSbatCHIFM171.RECEIPT_YM);
//		// 領収年月日
//		inMapReceiptYmd = inMap.getString(JBSbatCHIFM171.RECEIPT_YMD);
//		// 領収金額
//		inMapReceiptAmnt = inMap.getBigDecimal(JBSbatCHIFM171.RECEIPT_AMNT);
//		// 領収消費税額
//		inMapReceiptStaxAmnt = inMap.getBigDecimal(JBSbatCHIFM171.RECEIPT_STAX_AMNT);
//		// 督促ステータス
//		inMapTokusokuStat = inMap.getString(JBSbatCHIFM171.TOKUSOKU_STAT);
//		// 請求時請求方法コード
//		inMapSikyJiSikyWayCd = inMap.getString(JBSbatCHIFM171.SIKY_JI_SIKY_WAY_CD);
//		// 前月請求フラグ
//		inMapZgtSeikyFlg = inMap.getString(JBSbatCHIFM171.ZGT_SEIKY_FLG);
//		// 当月債権額
//		inMapTgtSaikenAmnt = inMap.getString(JBSbatCHIFM171.TGT_SAIKEN_AMNT);
//		// 前月未納債権フラグ
//		inMapZgtMnSaikenFlg = inMap.getString(JBSbatCHIFM171.ZGT_MN_SAIKEN_FLG);
//		// 前々月未納債権フラグ
//		inMapZZgtMnSaikenFlg = inMap.getString(JBSbatCHIFM171.ZZGT_MN_SAIKEN_FLG);
//		// 前月請求方法コード
//		inMapZgtSeikyWayCd = inMap.getString(JBSbatCHIFM171.ZGT_SEIKY_WAY_CD);
//		// 前月口座振替結果コード
//		inMapZgtKhriRsltCd = inMap.getString(JBSbatCHIFM171.ZGT_KHRI_RSLT_CD);
//		// 口座ステータス
//		inMapKozaStat = inMap.getString(JBSbatCHIFM171.KOZA_STAT);
//		// 請求方法適用調整年月日
//		inMapSeikyWayAplyAdjYmd = inMap.getString(JBSbatCHIFM171.SEIKY_WAY_APLY_ADJ_YMD);
//		// フロアリミット超過フラグ
//		inMapFloorLimitChokaFlg = inMap.getString(JBSbatCHIFM171.FLRLMT_CHOK_FLG);
//		// 当月債権額
//		inMapTgtSeikyAmnt = inMap.getString(JBSbatCHIFM171.TGT_SEIKY_AMNT);
//		// 前月前受金充当額
//		inMapZgtMaeAmnt = inMap.getString(JBSbatCHIFM171.ZGT_MAEUK_JUTO_AMNT);
//		// 前月未収額
//		inMapZgtMiAmnt = inMap.getString(JBSbatCHIFM171.ZGT_MISHU_AMNT);
		
		// 請求契約配下サービス契約解約理由識別コード
		inMapSkhkSvkeiDlreSkbtCd = inMap.getString(JBSbatCHIFM406.SKHK_SVKEI_DLRE_SKBT_CD);
		// 強制窓口フラグ
		inMapKyoseiMadoguchiFlg = inMap.getString(JBSbatCHIFM406.KYOSEI_MADOGUCHI_FLG);
		// 合算請求有無フラグ
		inMapGsanSeikyUmFlg = inMap.getString(JBSbatCHIFM406.GSAN_SEIKY_UM_FLG);
		// 前受金相殺有無フラグ
		inMapMaeukkinSosaiUmFlg = inMap.getString(JBSbatCHIFM406.MAEUKKIN_SOSAI_UM_FLG);
		// 通話明細発行有無フラグ
		inMapTwDtlHakUmFlg = inMap.getString(JBSbatCHIFM406.TW_DTL_HAK_UM_FLG);
		// 請求テーブル更新有無フラグ
		inMapSeikyTableUpdUmFlg = inMap.getString(JBSbatCHIFM406.SEIKY_TABLE_UPD_UM_FLG);
		// 請求方法変更フラグ
		inMapSeikyWayChgFlg = inMap.getString(JBSbatCHIFM406.SEIKY_WAY_CHG_FLG);
		// 同封コード
		inMapDofuCd = inMap.getString(JBSbatCHIFM406.DOFU_CD);
		// 請求番号
		inMapSeikyNo = inMap.getString(JBSbatCHIFM406.SEIKY_NO);
		// 請求年月
		inMapSeikyYm = inMap.getString(JBSbatCHIFM406.SEIKY_YM);
		// 支払方法コード
		inMapPayWayCd = inMap.getString(JBSbatCHIFM406.PAY_WAY_CD);
		// 申込時支払方法
		inMapMskmPayWay = inMap.getString(JBSbatCHIFM406.MSKM_PAY_WAY);
		// 収納代行会社コード
		inMapShnodkcmpCd = inMap.getString(JBSbatCHIFM406.SHNODKCMP_CD);
		// 送付先郵便番号
		inMapSohusPcd = inMap.getString(JBSbatCHIFM406.SOHUS_PCD);
		// 送付先都道府県名
		inMapSohusStateNm = inMap.getString(JBSbatCHIFM406.SOHUS_STATE_NM);
		// 送付先市区町村名
		inMapSohusCityNm = inMap.getString(JBSbatCHIFM406.SOHUS_CITY_NM);
		// 送付先大字通称名
		inMapSohusOaztsuNm = inMap.getString(JBSbatCHIFM406.SOHUS_OAZTSU_NM);
		// 送付先字丁目名
		inMapSohusAzchoNm = inMap.getString(JBSbatCHIFM406.SOHUS_AZCHO_NM);
		// 送付先住所番地号
		inMapSohusBnchigo = inMap.getString(JBSbatCHIFM406.SOHUS_BNCHIGO);
		// 送付先住所補記・建物名
		inMapSohusAdrttm = inMap.getString(JBSbatCHIFM406.SOHUS_ADRTTM);
		// 送付先住所補記・部屋番号
		inMapSohusAdrrm = inMap.getString(JBSbatCHIFM406.SOHUS_ADRRM);
		// 送付先名
		inMapSohusNm = inMap.getString(JBSbatCHIFM406.SOHUS_NM);
		// 送付先部課名
		inMapSohusBkm = inMap.getString(JBSbatCHIFM406.SOHUS_BKM);
		// 送付先担当名
		inMapSohusTntshaNm = inMap.getString(JBSbatCHIFM406.SOHUS_TNTSHA_NM);
		// クレジット会社コード
		inMapCrecardCompCd = inMap.getString(JBSbatCHIFM406.CRECARD_COMP_CD);
		// クレジット交換コード
		inMapCreditKokanCd = inMap.getString(JBSbatCHIFM406.CREDIT_KOKAN_CD);
		// クレジットカード番号
		inMapCrecardNo = inMap.getString(JBSbatCHIFM406.CRECARD_NO);
		// クレジットカード名義人名
		inMapCrecardMeigin = inMap.getString(JBSbatCHIFM406.CRECARD_MEIGIN);
		// クレジット会社名
		inMapCrecardCompNm = inMap.getString(JBSbatCHIFM406.CRECARD_COMP_NM);
		// オーソリ結果フラグ
		inMapAuthoriRsltFlg = inMap.getString(JBSbatCHIFM406.AUTHORI_RSLT_FLG);
		// 請求金額
		inMapSeikyAmnt = inMap.getBigDecimal(JBSbatCHIFM406.SEIKY_AMNT);
		// 請求消費税額
		inMapSeikyStaxAmnt = inMap.getBigDecimal(JBSbatCHIFM406.SEIKY_STAX_AMNT);
		// 利用期間開始日
		inMapUsePrdStaYmd = inMap.getString(JBSbatCHIFM406.USE_PRD_STA_YMD);
		// 利用期間終了日
		inMapUsePrdEndYmd = inMap.getString(JBSbatCHIFM406.USE_PRD_END_YMD);
		// 支払期限年月日
		inMapPayKigenYmd = inMap.getString(JBSbatCHIFM406.PAY_KIGEN_YMD);
		// 領収請求番号
		inMapReceiptSeikyNo = inMap.getString(JBSbatCHIFM406.RECEIPT_SEIKY_NO);
		// 領収方法
		inMapReceiptWay = inMap.getString(JBSbatCHIFM406.RECEIPT_WAY);
		// 領収月
		inMapReceiptYm = inMap.getString(JBSbatCHIFM406.RECEIPT_YM);
		// 領収年月日
		inMapReceiptYmd = inMap.getString(JBSbatCHIFM406.RECEIPT_YMD);
		// 領収金額
		inMapReceiptAmnt = inMap.getBigDecimal(JBSbatCHIFM406.RECEIPT_AMNT);
		// 領収消費税額
		inMapReceiptStaxAmnt = inMap.getBigDecimal(JBSbatCHIFM406.RECEIPT_STAX_AMNT);
		// 督促ステータス
		inMapTokusokuStat = inMap.getString(JBSbatCHIFM406.TOKUSOKU_STAT);
		// 請求時請求方法コード
		inMapSikyJiSikyWayCd = inMap.getString(JBSbatCHIFM406.SIKY_JI_SIKY_WAY_CD);
		// 前月請求フラグ
		inMapZgtSeikyFlg = inMap.getString(JBSbatCHIFM406.ZGT_SEIKY_FLG);
		// 当月債権額
		inMapTgtSaikenAmnt = inMap.getString(JBSbatCHIFM406.TGT_SAIKEN_AMNT);
		// 前月未納債権フラグ
		inMapZgtMnSaikenFlg = inMap.getString(JBSbatCHIFM406.ZGT_MN_SAIKEN_FLG);
		// 前々月未納債権フラグ
		inMapZZgtMnSaikenFlg = inMap.getString(JBSbatCHIFM406.ZZGT_MN_SAIKEN_FLG);
		// 前月請求方法コード
		inMapZgtSeikyWayCd = inMap.getString(JBSbatCHIFM406.ZGT_SEIKY_WAY_CD);
		// 前月口座振替結果コード
		inMapZgtKhriRsltCd = inMap.getString(JBSbatCHIFM406.ZGT_KHRI_RSLT_CD);
		// 口座ステータス
		inMapKozaStat = inMap.getString(JBSbatCHIFM406.KOZA_STAT);
		// 請求方法適用調整年月日
		inMapSeikyWayAplyAdjYmd = inMap.getString(JBSbatCHIFM406.SEIKY_WAY_APLY_ADJ_YMD);
		// フロアリミット超過フラグ
		inMapFloorLimitChokaFlg = inMap.getString(JBSbatCHIFM406.FLRLMT_CHOK_FLG);
		// 当月債権額
		inMapTgtSeikyAmnt = inMap.getString(JBSbatCHIFM406.TGT_SEIKY_AMNT);
		// 前月前受金充当額
		inMapZgtMaeAmnt = inMap.getString(JBSbatCHIFM406.ZGT_MAEUK_JUTO_AMNT);
		// 前月未収額
		inMapZgtMiAmnt = inMap.getString(JBSbatCHIFM406.ZGT_MISHU_AMNT);
		// クレジット有効性ＮＧフラグ
		inMapCreditYukoseiNgFlg = inMap.getString(JBSbatCHIFM406.CREDIT_YUKOSEI_NG_FLG);
		// v57.00.00 ANK-3943-00-00 MOD END
		
		if(!this.prvSeiKeiNo.equals(inMapSeikyKeiNo))
		{
			// 抑止業務パターンコード取得
			this.yksGyoumuCd = getYoksiWorkCd();
			this.checkZenSeikyDateUmu();
		}
		
		// 請求書発行有無判定
		Map<String, String> sksOputCtrlInfo = judgeSeikyusHakkoUmu();
		
		// 請求額がプラスの場合
		if (!isMinus)
		{
			// 請求書等発行抑止情報作成
			if (yoksiCdList.contains(JACStrConst.SEIKY_YOKSI_CD_SKS_YOKSI))
			{
				// 督促ステータスが59以下、62の場合に出力
				if (JACStrConst.TOKUSOKU_STAT_LAW_TAISHO.compareTo(inMapTokusokuStat) >= 1
				|| JACStrConst.TOKUSOKU_STAT_SMALL_SKN.compareTo(inMapTokusokuStat) == 0)
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute]請求書等発行抑止情報作成");
					outputItem.addOutMapList(makeYoksiInfo(JACStrConst.SEIKY_YOKSI_CD_SKS_YOKSI));
				}
			}
			
			// 窓口支払０円請求情報作成
			else if (JACStrConst.SEIKY_MADOGUCHI.equals(inMapSeikyWayCd)
				&& (inMapSeikyAmnt) != null 
				&& BigDecimal.ZERO.compareTo(inMapSeikyAmnt) == 0)
			{
				// 請求書作成フラグに「作成しない」を設定
				seikyusSakseiFlg = JACStrConst.SIKY_SAKSEI_FLG_NSI;
				
				// 窓口支払０円請求情報作成
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute]窓口支払０円請求情報作成");
				outputItem.addOutMapList(makeMdgcZeroYenSeikyInfo());
			}
			
			// 口座番号発行抑止情報作成
			if ((JACStrConst.SEIKY_KHRI.equals(inMapSeikyWayCd) || JACStrConst.SEIKY_YUFUIRI.equals(inMapSeikyWayCd))
					&& yoksiCdList.contains(JACStrConst.SEIKY_YOKSI_CD_KOZANO_YOKSI))
			{
				// 口座番号発行抑止情報作成
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute]口座番号発行抑止情報作成");
				outputItem.addOutMapList(makeYoksiInfo(JACStrConst.SEIKY_YOKSI_CD_KOZANO_YOKSI));
			}
		}
		else
		{
			// 請求書データ作成結果情報作成
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute]請求書データ作成結果情報作成");
			outputItem.addOutMapList(makeSeikyusSakseiRsltInfo(JACStrConst.SIKY_MAKE_RSLT_CD_SIKY_AMNT_NG));
		}
		
		// 請求書作成フラグ再設定
		// 請求書作成フラグが"2"（再設定）の場合
		if (JACStrConst.SIKY_SAKSEI_FLG_RESET.equals(seikyusSakseiFlg))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute]請求書作成フラグ再設定");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][inMapZgtKhriRsltCd=" + inMapZgtKhriRsltCd + "]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][督促抑止対象=" + yoksiCdList.contains(JACStrConst.SEIKY_YOKSI_CD_TKSK) + "]");
			// 前月請求．口座振替結果コードが"1"（残高不足）の場合
			if (JACStrConst.HURIKAE_KEKKA_HUSOKU.equals(inMapZgtKhriRsltCd))
			{
				// 督促抑止対象の場合
				if (yoksiCdList.contains(JACStrConst.SEIKY_YOKSI_CD_TKSK))
				{
					// "0"（作成しない）
					seikyusSakseiFlg = JACStrConst.SIKY_SAKSEI_FLG_NSI;
				}
				// 督促抑止対象外の場合
				else
				{
					// "1"（作成する）
					seikyusSakseiFlg = JACStrConst.SIKY_SAKSEI_FLG_ARI;
				}
			}
			// それ以外の場合
			else
			{
				// 督促抑止対象の場合
				if (yoksiCdList.contains(JACStrConst.SEIKY_YOKSI_CD_TKSK))
				{
					// "1"（作成する）
					seikyusSakseiFlg = JACStrConst.SIKY_SAKSEI_FLG_ARI;
				}
				// 督促抑止対象外の場合
				else
				{
					// "0"（作成しない）
					seikyusSakseiFlg = JACStrConst.SIKY_SAKSEI_FLG_NSI;
				}
			}
		}

		//v34.00.00 Add Start
		// 請求書作成フラグが"0"（作成しない）の場合
		if(JACStrConst.SIKY_SAKSEI_FLG_NSI.equals(seikyusSakseiFlg))
		{
			// 請求時請求方法コード　≠　1（窓口）
			// かつ、通話明細書発行有無フラグ　＝　0（通話明細発行なし）
			// かつ、請求配下サービス契約状態コード　＝　100（サービス提供中）
			// かつ、請求書発行要否　＝　0（否）の時
			// かつ、抑止業務コード　＝　ｅｏ電気抑止コード対象外リストに存在しない時
			if ((!JACStrConst.SEIKY_MADOGUCHI.equals(inMapSikyJiSikyWayCd))
					&& JACStrConst.TUWA_MEISAI_UMU_FLG_NASI.equals(inMapTwDtlHakUmFlg)
					&& JACStrConst.SKHK_SVKEI_STAT_CD_SVC_TK.equals(inMapSkhkSvkeiStatCd)
					&& JACStrConst.SKS_HAK_YH_H.equals(inMapSeikyusHakkoYh)
					&& (!eoElecyoksiCdList.contains(yksGyoumuCd)))
			{
				// 督促ステータス　＝　06（利用停止予告済（手続き未完））
				// かつ、通話明細書発行有無フラグ　＝　0（通話明細発行なし）
				// かつ、請求方法コード　＝　2（口座振替）又は請求方法コード　＝　3（郵便振込）
				// かつ、請求契約番号　＝　ｅｏ電気単独請求先マップに存在する時
				if(JACStrConst.TOKUSOKU_STAT_USE_STOP_YO_MI.equals(inMapTokusokuStat)
					&& (JACStrConst.SEIKY_KHRI.equals(inMapSikyJiSikyWayCd) 
							|| JACStrConst.SEIKY_YUFUIRI.equals(inMapSikyJiSikyWayCd))
					&& eoelecOnlySkskMap.contains(inMapSeikyKeiNo))
				{
					//設定処理
					setEoElecSksHakkoYh(sksOputCtrlInfo);
				}
				// 督促ステータス　＝　10（利用停止予告済)
				// かつ、請求契約番号　＝　ｅｏ電気単独請求先マップに存在する時
				else if(JACStrConst.TOKUSOKU_STAT_USE_STOP_YO_ZUMI.equals(inMapTokusokuStat)
						&& eoelecOnlySkskMap.contains(inMapSeikyKeiNo))
				{
					//設定処理
					setEoElecSksHakkoYh(sksOputCtrlInfo);
				}
			}
		}
		//v34.00.00 Add End
		
		// 督促ステータス＝60以上、かつ退避．請求契約番号≠請求契約番号の場合
		if (0 >= "60".compareTo(inMapTokusokuStat) && !inMapSeikyKeiNo.equals(prvSeiKeiNo))
		{
			// 債権有無フラグ＝1、または領収有無フラグ＝1の場合のみ出力を行う
			if (JACStrConst.TOGETSU_SAIKEN_UMU_ARI.equals(tgtSknUm)
			|| JACStrConst.RECEIPT_UMU_ARI.equals(inMapReceiptUm))
			{
				// 請求書データ作成結果情報作成
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute]請求書データ作成結果情報作成");
				outputItem.addOutMapList(makeSeikyusSakseiRsltInfo(JACStrConst.SIKY_MAKE_RSLT_CD_SKN_FIX_AF));
			}
		}
		
		// 請求データ（請求書発行有無付加）作成
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute]請求データ（請求書発行有無付加）作成");
		outputItem.addOutMapList(makeSeikyData(sksOputCtrlInfo));
		
		// 請求契約番号　退避
		this.prvSeiKeiNo = inMapSeikyKeiNo;
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		return outputItem;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CH_M_YOKSI_PTN_TEIGI.close();
		db_CH_M_SKS_OPUT_CTRL.close();
		db_CH_T_SEIKY_UCWK.close();
		db_CH_T_SEIKY_UCWK2.close();
		db_CH_M_PRC_KMK_CS_CHGE.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		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配列に入れます。バイント変数は以下に説明します。
	 *		 	業務機能識別コード
	 *		 	抑止パターン定義適用開始年月日
	 *		 	抑止パターン定義適用終了年月日
	 *		 	業務機能識別コード
	 *		 	抑止パターン定義適用開始年月日
	 *		 	抑止パターン定義適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_M_YOKSI_PTN_TEIGI_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());

		// DBアクセスを実行します
		db_CH_M_YOKSI_PTN_TEIGI.selectBySqlDefine(paramList, CH_M_YOKSI_PTN_TEIGI_CH_SELECT_001);
	}

	/**
	 * SQLKEY(CH_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 executeCH_M_SKS_OPUT_CTRL_CH_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CH_M_SKS_OPUT_CTRL.selectBySqlDefine(paramList, CH_M_SKS_OPUT_CTRL_CH_SELECT_001);
	}

	/**
	 * 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 executeCH_T_SEIKY_UCWK_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());

		// DBアクセスを実行します
		db_CH_T_SEIKY_UCWK.selectBySqlDefine(paramList, CH_T_SEIKY_UCWK_CH_SELECT_006);
	}
	
	/**
	 * 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_SEIKY_UCWK_CH_SELECT_019(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_CH_T_SEIKY_UCWK2.selectBySqlDefine(paramList, CH_T_SEIKY_UCWK_CH_SELECT_019);
	}
	
	/**
	 * SQLKEY(CH_SELECT_008)で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_008(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_CH_M_PRC_KMK_CS_CHGE.selectBySqlDefine(paramList, CH_M_PRC_KMK_CS_CHGE_AC_SELECT_008);
	}
	
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 請求書出力制御情報を取得します。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void selectSksOputCtrlInfo() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectSksOputCtrlInfo]");
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		// 請求書出力制御適用開始年月日
		paramList.setValue(super.opeDate);
		// 請求書出力制御適用終了年月日
		paramList.setValue(super.opeDate);
	
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectSksOputCtrlInfo][paramList=" + paramList.getList().toString() + "]");
	
		// SQL実行
		executeCH_M_SKS_OPUT_CTRL_CH_SELECT_001(paramList.getList().toArray());
		JBSbatCommonDBInterface sksOputCtrlInfo = db_CH_M_SKS_OPUT_CTRL.selectNext();

		// 取得結果判定
		if (sksOputCtrlInfo == null)
		{
			// マスタ未存在エラー
			String[] msgParam = new String[]
			{ JBSbatCH_M_SKS_OPUT_CTRL.TABLE_NAME, paramList.getList().toString() };
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECHB0270CH, msgParam);
		}
		
		while (sksOputCtrlInfo != null)
		{
			
			HashMap<String, String> tmpMap = new HashMap<String, String>();
			// 請求方法コード
			String seikyWayCd = sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.SEIKY_WAY_CD);
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.SEIKY_WAY_CD, seikyWayCd);
			// 請求契約配下サービス契約状態コード
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.SKHK_SVKEI_STAT_CD, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.SKHK_SVKEI_STAT_CD));
			// 請求契約配下サービス契約解約理由識別コード
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.SKHK_SVKEI_DLRE_SKBT_CD, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.SKHK_SVKEI_DLRE_SKBT_CD));
			// 請求書発行要否
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.SEIKYUS_HAKKO_YH, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.SEIKYUS_HAKKO_YH));
			// 抑止業務パターンコード
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.YOKSI_WORK_PATTERN_CD, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.YOKSI_WORK_PATTERN_CD));
			// 当月債権有無
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.TOGTU_HASSEI_SKN_UM, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.TOGTU_HASSEI_SKN_UM));
			// 前月未納債権有無
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.ZNGTU_MINO_SKN_UM, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.ZNGTU_MINO_SKN_UM));
			// 前々月以前未納債権有無
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.ZZNGTU_IZN_MINO_SKN_UM, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.ZZNGTU_IZN_MINO_SKN_UM));
			// 収納代行会社コード
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.SHNODKCMP_CD, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.SHNODKCMP_CD));
			// 未納合算有無
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.MINO_GSAN_UM, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.MINO_GSAN_UM));
			// 強制窓口登録理由コード
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.KYOSEI_MDGC_ADD_RSN_CD, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.KYOSEI_MDGC_ADD_RSN_CD));
			// 申込時請求方法コード
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.MKM_JI_SIKY_WAY_CD, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.MKM_JI_SIKY_WAY_CD));
			// 請求時請求方法コード
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.SIKY_JI_SIKY_WAY_CD, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.SIKY_JI_SIKY_WAY_CD));
			// 前受金充当有無
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.MAEUK_JUTO_UM, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.MAEUK_JUTO_UM));
			// 通話明細書発行有無
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.TUWA_DTL_HAKKO_UM, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.TUWA_DTL_HAKKO_UM));
			// 領収証発行有無
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.RECEIPT_HAKKO_UM, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.RECEIPT_HAKKO_UM));
			// 督促ステータス
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.TOKUSOKU_STAT, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.TOKUSOKU_STAT));
			// 前月以前請求無
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.ZNGTU_IZN_SIKY_UM, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.ZNGTU_IZN_SIKY_UM));
			// 請求金額合計（自）
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.SIKY_AMNT_TOTAL_JI, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.SIKY_AMNT_TOTAL_JI));
			// 請求金額合計（至）
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.SIKY_AMNT_TOTAL_ITA, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.SIKY_AMNT_TOTAL_ITA));;
			// 請求書作成フラグ
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.SKS_SAKSEI_FLG, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.SKS_SAKSEI_FLG));
			// ＥＡＮバーコード種別コード
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.EAN_BARCODE_SBT_CD, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.EAN_BARCODE_SBT_CD));
			// ＥＡＮ取扱期限イベントコード
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.EAN_TRAT_LIMIT_EVENT_CD, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.EAN_TRAT_LIMIT_EVENT_CD));
			// インフォメーションパターンコード
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.INFO_PATTERN_CD, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.INFO_PATTERN_CD));
			// 同封物パターンコード
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.DOHUBT_PATTERN_CD, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.DOHUBT_PATTERN_CD));
			// 料金コースコード
			tmpMap.put(JBSbatCH_M_SKS_OPUT_CTRL.PCRS_CD, sksOputCtrlInfo.getString(JBSbatCH_M_SKS_OPUT_CTRL.PCRS_CD));

			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectSksOputCtrlInfo][tmpMap=" + tmpMap.toString() + "]");

			if (halfSp1.equals(seikyWayCd))
			{
				this.sksOputCtrlInfoList1.add(tmpMap);
				this.sksOputCtrlInfoList2.add(tmpMap);
				this.sksOputCtrlInfoList3.add(tmpMap);
				this.sksOputCtrlInfoList4.add(tmpMap);
			}
			else if (JACStrConst.SEIKY_MADOGUCHI.equals(seikyWayCd))
			{
				this.sksOputCtrlInfoList1.add(tmpMap);
			}
			else if (JACStrConst.SEIKY_KHRI.equals(seikyWayCd))
			{
				this.sksOputCtrlInfoList2.add(tmpMap);
			}
			else if (JACStrConst.SEIKY_YUFUIRI.equals(seikyWayCd))
			{
				this.sksOputCtrlInfoList3.add(tmpMap);
			}
			else if (JACStrConst.SEIKY_CREDIT.equals(seikyWayCd))
			{
				this.sksOputCtrlInfoList4.add(tmpMap);
			}
			sksOputCtrlInfo = db_CH_M_SKS_OPUT_CTRL.selectNext();
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectSksOputCtrlInfo]");
	}

	/**
	 * 判定対象抑止コードリストを作成します。
	 * 
	 * @param yoksiPtnTeigiInfoList 判定対象抑止コードリスト
	 * @return 判定対象抑止コードリスト
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private List<String> makeTrgtYoksiCdList(List<Map<String, String>> yoksiPtnTeigiInfoList) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeTrgtYoksiCdList]");
		
		// 抑止コード数を取得
		int yoksiCdCnt = Integer.parseInt(yoksiPtnTeigiInfoList.get(0).get(CNT_YOKSI_CD));
		
		// 判定対象となる抑止コードを取得
		List<String> trgtYoksiCdList = new ArrayList<String>();
		for (int i = 0; i < yoksiCdCnt; i++)
		{
			trgtYoksiCdList.add(yoksiPtnTeigiInfoList.get(i).get(JBSbatCH_M_YOKSI_PTN_TEIGI.YOKSI_CD));
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeTrgtYoksiCdList][trgtYoksiCdList=" + trgtYoksiCdList.toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeTrgtYoksiCdList]");
		
		return trgtYoksiCdList;
	}
	
	/**
	 * 抑止パターン定義マップを作成します。
	 * 
	 * @param yoksiPtnTeigiInfoList 抑止パターン定義リスト
	 * @return 判定対象抑止コードリスト
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private Map<List<String>, String> makeYoksiPtnTeigiMap(List<Map<String, String>> yoksiPtnTeigiInfoList) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeYoksiPtnTeigiMap]");
		
		List<String> keyList = new ArrayList<String>();
		Map<String, String> beforeInfo = yoksiPtnTeigiInfoList.get(0);
		
		Map<List<String>, String> yoksiPtnTeigiMap = new HashMap<List<String>, String>();
		for (int i = 0; i < yoksiPtnTeigiInfoList.size(); i++)
		{
			Map<String, String> currentInfo = yoksiPtnTeigiInfoList.get(i);
			
			// キー取得
			String beforeKey = beforeInfo.get(JBSbatCH_M_YOKSI_PTN_TEIGI.YOKSI_WORK_PATTERN_CD);
			String currentKey = currentInfo.get(JBSbatCH_M_YOKSI_PTN_TEIGI.YOKSI_WORK_PATTERN_CD);

			// キーが変わったとき
			if (!beforeKey.equals(currentKey))
			{
				// 情報追加
				yoksiPtnTeigiMap.put(keyList, beforeInfo.get(JBSbatCH_M_YOKSI_PTN_TEIGI.YOKSI_WORK_PATTERN_CD));
				
				// キーリスト初期化
				keyList = new ArrayList<String>();
			}
			
			// 抑止コードをキーリストに追加
			keyList.add(currentInfo.get(JBSbatCH_M_YOKSI_PTN_TEIGI.YOKSI_CD));
			
			beforeInfo = yoksiPtnTeigiInfoList.get(i);
		}
		
		// マップ未設定の情報が残っているとき
		if (0 < keyList.size())
		{
			yoksiPtnTeigiMap.put(keyList, beforeInfo.get(JBSbatCH_M_YOKSI_PTN_TEIGI.YOKSI_WORK_PATTERN_CD));
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeYoksiPtnTeigiMap][yoksiPtnTeigiMap=" + yoksiPtnTeigiMap.toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeYoksiPtnTeigiMap]");
		
		return yoksiPtnTeigiMap;
	}
	
	/**
	 * 抑止パターン定義情報を取得します。
	 * 
	 * @param workKinoSkbtCd 機能識別コード
	 * @return 抑止パターン定義情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private List<Map<String, String>> selectYoksiPtnTeigiInfoList(String workKinoSkbtCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectYoksiPtnTeigiInfoList]");

		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
	
		// 業務機能識別コード
		paramList.setValue(workKinoSkbtCd);
		// 抑止パターン定義適用開始年月日
		paramList.setValue(super.opeDate);
		// 抑止パターン定義適用終了年月日
		paramList.setValue(super.opeDate);
		// 業務機能識別コード
		paramList.setValue(workKinoSkbtCd);
		// 抑止パターン定義適用開始年月日
		paramList.setValue(super.opeDate);
		// 抑止パターン定義適用終了年月日
		paramList.setValue(super.opeDate);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectYoksiPtnTeigiInfoList][paramList=" + paramList.getList().toString() + "]");

		// SQL実行
		executeCH_M_YOKSI_PTN_TEIGI_CH_SELECT_001(paramList.getList().toArray());
		JBSbatCommonDBInterface yoksiPtnTeigi = db_CH_M_YOKSI_PTN_TEIGI.selectNext();
		
		// 結果取得
		List<Map<String, String>> yoksiPtnTeigiInfoList = new ArrayList<Map<String, String>>();
		while (yoksiPtnTeigi != null)
		{
			Map<String, String> tmpMap = new HashMap<String, String>();
			// 抑止業務パターンコード
			tmpMap.put(JBSbatCH_M_YOKSI_PTN_TEIGI.YOKSI_WORK_PATTERN_CD, yoksiPtnTeigi.getString(JBSbatCH_M_YOKSI_PTN_TEIGI.YOKSI_WORK_PATTERN_CD));
			// 抑止コード
			tmpMap.put(JBSbatCH_M_YOKSI_PTN_TEIGI.YOKSI_CD, yoksiPtnTeigi.getString(JBSbatCH_M_YOKSI_PTN_TEIGI.YOKSI_CD));
			// 抑止コード数
			tmpMap.put(CNT_YOKSI_CD, yoksiPtnTeigi.getString(CNT_YOKSI_CD));
			
			yoksiPtnTeigiInfoList.add(tmpMap);
			yoksiPtnTeigi = db_CH_M_YOKSI_PTN_TEIGI.selectNext();
		}
		
		// 取得結果判定
		if (yoksiPtnTeigiInfoList.size() <= 0)
		{
			// マスタ未存在エラー
			String[] msgParam = new String[]
			{ JBSbatCH_M_YOKSI_PTN_TEIGI.TABLE_NAME, paramList.getList().toString() };
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECHB0270CH, msgParam);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectYoksiPtnTeigiInfoList][yoksiPtnTeigiInfoList=" + yoksiPtnTeigiInfoList.toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectYoksiPtnTeigiInfoList]");
		
		return yoksiPtnTeigiInfoList;
	}

	
	/**
	 * 当月取得
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void setTogetsu() throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setTogetsu]");
		
		JCHbatSeikyKaknoBusinessUtil su = new JCHbatSeikyKaknoBusinessUtil(commonItem);
		try
		{
			// 当月取得
			this.togetsu = su.getBillYmContain(super.opeDate, JACStrConst.EVENT_CD_SEIKY_SHORI_YMD);
		}
		finally
		{
			su.close();
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setTogetsu][togetsu=" + this.togetsu + "]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setTogetsu]");
	}


	/**
	 * 前月以前請求データ有無チェック
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void checkZenSeikyDateUmu() throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][checkZenSeikyDateUmu]");

		// 該当データ有りの場合
		if(!JACStrConst.KARA_MOJI.equals(inMapZgtSeikyFlg))
		{
			// 前月以前請求有り
			this.tempZenSeikyUmu = JACStrConst.UM_ARI;
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][checkZenSeikyDateUmu][前月以前請求有り]");
		}
		else
		{
			// 前月以前請求無し
			this.tempZenSeikyUmu = JACStrConst.UM_NASHI;
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][checkZenSeikyDateUmu][前月以前請求無し]");
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][checkZenSeikyDateUmu]");
	}


	/**
	 * 請求データを作成します。
	 * 
	 * @param inMap 請求データ
	 * @param sksOputCtrlInfo 請求書出力制御情報
	 * @return 請求データ
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatServiceInterfaceMap makeSeikyData(Map<String, String> sksOputCtrlInfo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeSeikyData]");
		
		// 請求書出力制御情報取得
		String eanBarcodeSbtCd = null;
		String eanTratLimitEventCd = null;
		String infoPatternCd = null;
		String dohubtPatternCd = null;
		if (sksOputCtrlInfo != null)
		{
			eanBarcodeSbtCd = sksOputCtrlInfo.get(JBSbatCH_M_SKS_OPUT_CTRL.EAN_BARCODE_SBT_CD);
			eanTratLimitEventCd = sksOputCtrlInfo.get(JBSbatCH_M_SKS_OPUT_CTRL.EAN_TRAT_LIMIT_EVENT_CD);
			infoPatternCd = sksOputCtrlInfo.get(JBSbatCH_M_SKS_OPUT_CTRL.INFO_PATTERN_CD);
			dohubtPatternCd = sksOputCtrlInfo.get(JBSbatCH_M_SKS_OPUT_CTRL.DOHUBT_PATTERN_CD);
		}

		// 口座振替情報
		String bankCd = inMapBankCd;
		String bankShitenCd = inMapBankShitenCd;
		String kozaSbtCd = inMapYokinShumokuCd;
		String kozaNo = inMapKozaNo;
		String bankNm = inMapBankNm;
		String bankShitenNm = inMapBankShitenNm;
		String kozaKamokuNm = inMapKozaKamokuNm;
		
		// 領収機関情報
		String rcptBankCd = inMapReceiptBankCd;
		String rcptBankShitenCd = inMapReceiptBankShitenCd;
		String rcptKozaSbtCd = inMapReceiptKozaSbtCd;
		String rcptKozaNo = inMapReceiptKozaNo;
		String rcptBankNm = inMapReceiptBankNm;
		String rcptBankShitenNm = inMapReceiptBankShitenNm;
		String rcptKozaKamokuNm = inMapReceiptKozaKamokuNm;

		// 請求方法＝口振、または郵振かつ、請求書作成フラグ「作成する」の場合
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeSeikyData][口座番号発行抑止対象チェック][inMapSeikyWayCd=" + inMapSeikyWayCd + "][seikyusSakseiFlg=" + seikyusSakseiFlg + "]");
		if ((JACStrConst.SEIKY_KHRI.equals(inMapSeikyWayCd) || JACStrConst.SEIKY_YUFUIRI.equals(inMapSeikyWayCd))
			&& JACStrConst.SIKY_SAKSEI_FLG_ARI.equals(seikyusSakseiFlg))
		{
			// 抑止コードリストに「口座番号発行抑止」が含まれる場合
			if (yoksiCdList.contains(JACStrConst.SEIKY_YOKSI_CD_KOZANO_YOKSI))
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeSeikyData][口座番号発行抑止対象]");
				// ALL"*"マスク処理
				// 口座振替情報
				// "*"でマスク
				bankCd       = receiptBankCdDef;
				bankShitenCd = receiptBankShitenCdDef;
				kozaSbtCd    = receiptKozaSbtCdDef;
				kozaNo       = receiptKozaNoDef;
				// "＊"でマスク
				bankNm       = receiptBankNmDef;
				bankShitenNm = receiptBankShitenNmDef;
				kozaKamokuNm = receiptKozaKamokuNmDef;
				
				// 領収機関情報
				// "*"でマスク
				rcptBankCd       = receiptBankCdDef;
				rcptBankShitenCd = receiptBankShitenCdDef;
				rcptKozaSbtCd    = receiptKozaSbtCdDef;
				rcptKozaNo       = receiptKozaNoDef;
				// "＊"でマスク
				rcptBankNm       = receiptBankNmDef;
				rcptBankShitenNm = receiptBankShitenNmDef;
				rcptKozaKamokuNm = receiptKozaKamokuNmDef;
			}
			else
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeSeikyData][口座番号発行抑止対象外]");
				// 下3桁"*"マスク処理
				// 口座番号
				kozaNo = JPCUtilCommon.editCharStrMask(kozaNo, JACStrConst.ASTERISK, kozaNo.length() - 2, 3);
				// 領収口座番号
				rcptKozaNo = JPCUtilCommon.editCharStrMask(rcptKozaNo, JACStrConst.ASTERISK, rcptKozaNo.length() - 2, 3);
			}
		}
		
		ArrayList<String> seikyData = new ArrayList<String>();
		// 分割用ファイル区分
		seikyData.add(FILE_DIV_SEIKY_DATA);
		// レコード区分
		seikyData.add(inMapRecDiv);
		// 当月請求有無
		seikyData.add(inMapTogtuSikyUm);
		// 領収有無
		seikyData.add(inMapReceiptUm);
		// 領収証泣き別れ有無
		seikyData.add(inMapReceiptNakiwakareUm);
		// 督促有無
		seikyData.add(inMapTokusokuUm);
		// 請求書発行要否
		seikyData.add(inMapSeikyusHakkoYh);
		// 請求契約配下サービス契約状態コード
		seikyData.add(inMapSkhkSvkeiStatCd);
		// 請求契約配下サービス契約解約理由識別コード
		seikyData.add(inMapSkhkSvkeiDlreSkbtCd);
		// 強制窓口フラグ
		seikyData.add(inMapKyoseiMadoguchiFlg);
		// 合算請求有無フラグ
		seikyData.add(inMapGsanSeikyUmFlg);
		// 前受金相殺有無フラグ
		seikyData.add(inMapMaeukkinSosaiUmFlg);
		// 通話明細発行有無フラグ
		seikyData.add(inMapTwDtlHakUmFlg);
		// 請求書発行有無フラグ
		seikyData.add(seikyusSakseiFlg);
		
		// 請求テーブル更新有無フラグ
		// 当月請求金額発生有無判定
		if (JACStrConst.KARA_MOJI.equals(inMapTgtSeikyAmnt))
		{
			seikyData.add(inMapSeikyTableUpdUmFlg);
		}
		else
		{
			BigDecimal tmpTgtSeikyAmnt = new BigDecimal(inMapTgtSeikyAmnt);
			
			// 当月請求金額がゼロ円の場合
			if(BigDecimal.ZERO.compareTo(tmpTgtSeikyAmnt) == 0)
			{
				// 請求テーブル更新有無フラグが更新なしの場合
				if(JACStrConst.SEIKY_TABLE_UPD_UM_FLG_NSI.equals(inMapSeikyTableUpdUmFlg))
				{
					seikyData.add(JACStrConst.SEIKY_TABLE_UPD_UM_FLG_SZK);
				}
				// 請求テーブル更新有無フラグが更新ありの場合
				else
				{
					seikyData.add(JACStrConst.SEIKY_TABLE_UPD_UM_FLG_SSZK);
				}
			}
			// 当月請求金額がマイナスの場合
			else if(BigDecimal.ZERO.compareTo(tmpTgtSeikyAmnt) > 0)
			{
				// 請求テーブル更新有無フラグが更新なしの場合
				if(JACStrConst.SEIKY_TABLE_UPD_UM_FLG_NSI.equals(inMapSeikyTableUpdUmFlg))
				{
					seikyData.add(JACStrConst.SEIKY_TABLE_UPD_UM_FLG_MINUS);
				}
				// 請求テーブル更新有無フラグが更新ありの場合
				else
				{
					seikyData.add(JACStrConst.SEIKY_TABLE_UPD_UM_FLG_SMINUS);
				}
			}
			else
			{
				seikyData.add(inMapSeikyTableUpdUmFlg);
			}
		}
		
		// 請求方法変更フラグ
		seikyData.add(inMapSeikyWayChgFlg);
		// 同封コード
		seikyData.add(inMapDofuCd);
		// 請求契約番号
		seikyData.add(inMapSeikyKeiNo);
		// 請求番号
		seikyData.add(inMapSeikyNo);
		// 請求年月
		seikyData.add(inMapSeikyYm);
		// 支払方法コード
		seikyData.add(inMapPayWayCd);
		// 申込時支払方法
		seikyData.add(inMapMskmPayWay);
		// 請求方法コード
		seikyData.add(inMapSeikyWayCd);
		// 収納代行会社コード
		seikyData.add(inMapShnodkcmpCd);
		// 送付先郵便番号
		seikyData.add(inMapSohusPcd);
		// 送付先都道府県名
		seikyData.add(inMapSohusStateNm);
		// 送付先市区町村名
		seikyData.add(inMapSohusCityNm);
		// 送付先大字通称名
		seikyData.add(inMapSohusOaztsuNm);
		// 送付先字丁目名
		seikyData.add(inMapSohusAzchoNm);
		// 送付先住所番地号
		seikyData.add(inMapSohusBnchigo);
		// 送付先住所補記・建物名
		seikyData.add(inMapSohusAdrttm);
		// 送付先住所補記・部屋番号
		seikyData.add(inMapSohusAdrrm);
		// 送付先名
		seikyData.add(inMapSohusNm);
		// 送付先部課名
		seikyData.add(inMapSohusBkm);
		// 送付先担当名
		seikyData.add(inMapSohusTntshaNm);
		// 金融機関コード
		seikyData.add(bankCd);
		// 金融機関支店コード
		seikyData.add(bankShitenCd);
		// 口座種別コード
		seikyData.add(kozaSbtCd);
		// 口座番号
		seikyData.add(kozaNo);
		// 金融機関名
		seikyData.add(bankNm);
		// 金融機関支店名
		seikyData.add(bankShitenNm);
		// 口座科目名
		seikyData.add(kozaKamokuNm);
		// クレジット会社コード
		seikyData.add(inMapCrecardCompCd);
		// クレジット交換コード
		seikyData.add(inMapCreditKokanCd);
		// クレジットカード番号
		seikyData.add(inMapCrecardNo);
		// クレジットカード名義人名
		seikyData.add(inMapCrecardMeigin);
		// クレジット会社名
		seikyData.add(inMapCrecardCompNm);
		// オーソリ結果フラグ
		seikyData.add(inMapAuthoriRsltFlg);
		// ＥＡＮバーコード種別コード
		seikyData.add(eanBarcodeSbtCd);
		// ＥＡＮ取扱期限日イベントコード
		seikyData.add(eanTratLimitEventCd);
		// 請求金額
		seikyData.add(inMapSeikyAmnt.toPlainString());
		// 請求消費税額
		if (isOutputTax())
		{
			seikyData.add(inMapSeikyStaxAmnt.toPlainString());
		}
		else
		{
			seikyData.add(BigDecimal.ZERO.toPlainString());
		}
		// 利用期間開始日
		seikyData.add(inMapUsePrdStaYmd);
		// 利用期間終了日
		seikyData.add(inMapUsePrdEndYmd);
		// 支払期限年月日
		seikyData.add(inMapPayKigenYmd);
		// 領収請求番号
		seikyData.add(inMapReceiptSeikyNo);
		// 領収方法
		seikyData.add(inMapReceiptWay);
		// 領収月
		seikyData.add(inMapReceiptYm);
		// 領収年月日
		seikyData.add(inMapReceiptYmd);
		// 領収金額
		seikyData.add(inMapReceiptAmnt.toPlainString());
		// 領収消費税額
		if (isOutputReceiptTax())
		{
			seikyData.add(inMapReceiptStaxAmnt.toPlainString());
		}
		else
		{
			seikyData.add(BigDecimal.ZERO.toPlainString());
		}
		// 領収金融機関コード
		seikyData.add(rcptBankCd);
		// 領収金融機関支店コード
		seikyData.add(rcptBankShitenCd);
		// 領収口座種別コード
		seikyData.add(rcptKozaSbtCd);
		// 領収口座番号
		seikyData.add(rcptKozaNo);
		// 領収金融機関名
		seikyData.add(rcptBankNm);
		// 領収金融機関支店名
		seikyData.add(rcptBankShitenNm);
		// 領収口座科目名
		seikyData.add(rcptKozaKamokuNm);
		// 督促ステータス
		seikyData.add(inMapTokusokuStat);
		// インフォメーションパターンコード
		seikyData.add(infoPatternCd);
		// 同封物パターンコード
		seikyData.add(dohubtPatternCd);
		// 請求書発行年月日
		seikyData.add(super.opeDate);
		
		JBSbatServiceInterfaceMap rsltMap = new JBSbatServiceInterfaceMap();
		rsltMap.set(JBSbatCHIFM086.ITEM, JACbatRknBusinessUtil.convListToString(seikyData));
		rsltMap.setOutFlg(true);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSeikyData][seikyData=" + seikyData.toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSeikyData]");

		return rsltMap;
	}

	
	/**
	 * 抑止情報を作成します。
	 * 
	 * @param inMap 請求データ
	 * @param hakkoYoksiCd 発行抑止コード（請求書等発行抑止／口座番号表示抑止）
	 * @return 抑止情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatServiceInterfaceMap makeYoksiInfo(String hakkoYoksiCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeYoksiInfo]");
		
		ArrayList<String> yoksiInfo = new ArrayList<String>();
		// 分割用ファイル区分
		yoksiInfo.add(FILE_DIV_YOKSI_INFO);
		// 請求契約番号
		yoksiInfo.add(inMapSeikyKeiNo);
		// 請求年月
		yoksiInfo.add(inMapSeikyYm);
		// 発行抑止コード
		yoksiInfo.add(hakkoYoksiCd);
		
		JBSbatServiceInterfaceMap rsltMap = new JBSbatServiceInterfaceMap();
		rsltMap.set(JBSbatCHIFM086.ITEM, JACbatRknBusinessUtil.convListToString(yoksiInfo));
		rsltMap.setOutFlg(true);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeYoksiInfo][yoksiInfo=" + yoksiInfo.toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeYoksiInfo]");
		
		return rsltMap;
	}
	
	/**
	 * 窓口支払０円請求情報を作成します。
	 * 
	 * @return 窓口支払０円請求情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatServiceInterfaceMap makeMdgcZeroYenSeikyInfo() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeMdgcZeroYenSeikyInfo]");
		
		ArrayList<String> mdgcZeroYenSeikyInfo = new ArrayList<String>();
		// 分割用ファイル区分
		mdgcZeroYenSeikyInfo.add(FILE_DIV_MDGC_ZERO_YEN_SEIKY_INFO);
		// 請求契約番号
		mdgcZeroYenSeikyInfo.add(inMapSeikyKeiNo);
		
		JBSbatServiceInterfaceMap rsltMap = new JBSbatServiceInterfaceMap();
		rsltMap.set(JBSbatCHIFM086.ITEM, JACbatRknBusinessUtil.convListToString(mdgcZeroYenSeikyInfo));
		rsltMap.setOutFlg(true);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeMdgcZeroYenSeikyInfo][mdgcZeroYenSeikyInfo=" + mdgcZeroYenSeikyInfo.toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeMdgcZeroYenSeikyInfo]");
		
		return rsltMap;
	}
	
	/**
	 * 請求書データ作成結果情報を作成します。
	 * 
	 * @param resultCd 請求書作成結果コード
	 * @return 請求書データ作成結果情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatServiceInterfaceMap makeSeikyusSakseiRsltInfo(String resultCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeSeikyusSakseiRsltInfo]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeSeikyusSakseiRsltInfo][resultCd=" + resultCd + "]");
		
		ArrayList<String> seikyusSakseiRsltInfo = new ArrayList<String>();
		// 分割用ファイル区分
		seikyusSakseiRsltInfo.add(FILE_DIV_SEIKYUS_DATA_SAKSEI_RSLT_INFO);
		
		// 請求契約番号
		seikyusSakseiRsltInfo.add(inMapSeikyKeiNo);
		
		// 請求書作成結果コード
		seikyusSakseiRsltInfo.add(resultCd);
		
		// 関連内容
		// 作成結果コード＝24（債権確定後に当月料金／領収発生）の時、編集した値を出力する
		if (JACStrConst.SIKY_MAKE_RSLT_CD_SKN_FIX_AF.equals(resultCd))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeSeikyusSakseiRsltInfo][関連項目編集処理]");
			
			String amnt = null;
			
			// レコード区分＝２（領収のみ）の場合、入力ファイルの金額をそのまま使用する
			if (JACStrConst.REC_DIV_RYOSYU.equals(inMapRecDiv))
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeSeikyusSakseiRsltInfo][レコード区分=領収のみ]");
				
				amnt = inMapSeikyAmnt.toPlainString();
			}
			// その他の場合は、請求内訳スキーマより金額を取得してくる
			else
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeSeikyusSakseiRsltInfo][請求内訳よりデータ取得]");
				
				// ＤＢアクセス用のパラメータ定義
				JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
				
				dbList.setValue(inMapSeikyNo);	 	// 請求番号
				dbList.setValue(inMapSeikyYm); 		// 請求年月
				dbList.setValue(inMapSeikyKeiNo); 	// 請求契約番号
				dbList.setValue(workGsanMishu); 	// 料金項目コード
				
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeSeikyusSakseiRsltInfo][" + dbList.getList().toString() + "]");
				
				executeCH_T_SEIKY_UCWK_CH_SELECT_019(dbList.getList().toArray());
				
				JBSbatCommonDBInterface retDB = db_CH_T_SEIKY_UCWK2.selectNext();
				
				BigDecimal workAmnt = null;
				
				if (retDB != null)
				{
					workAmnt = retDB.getBigDecimal(JBSbatCH_T_SEIKY_UCWK.AMNT);
				}
				
				if (workAmnt != null)
				{
					amnt = workAmnt.toPlainString();
				}
				else
				{
					amnt = JACStrConst.KARA_MOJI;
				}
			}
			
			// 当月請求額 + 督促ステータスを出力
			String kanren = amnt.concat(JACStrConst.SPACE_1).concat("ST").concat(inMapTokusokuStat);
			seikyusSakseiRsltInfo.add(kanren);
		}
		// それ以外の場合は固定空文字
		else
		{
			seikyusSakseiRsltInfo.add(JACStrConst.KARA_MOJI);
		}
		
		JBSbatServiceInterfaceMap rsltMap = new JBSbatServiceInterfaceMap();
		rsltMap.set(JBSbatCHIFM086.ITEM, JACbatRknBusinessUtil.convListToString(seikyusSakseiRsltInfo));
		rsltMap.setOutFlg(true);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSeikyusSakseiRsltInfo][seikyusSakseiRsltInfo=" + seikyusSakseiRsltInfo.toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSeikyusSakseiRsltInfo]");
		
		return rsltMap;
	}
	
	/**
	 * 請求書発行有無の判定をします。
	 * 
	 *　　(1) 当月債権額取得
	 *　　(2) 当月債権発生有無判定（※請求額マイナスの場合、処理中断）
	 *　　(3) 強制窓口設定理由判定
	 *　　(4) 請求書出力制御情報取得
	 * 
	 * @return 請求出力制御情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private Map<String, String> judgeSeikyusHakkoUmu() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][judgeSeikyusHakkoUmu]");
		
		Map<String, String> sksOputCtrlInfo = null;
		
		// 前回請求契約番号　≠　入力．請求契約番号の場合
		if(!this.prvSeiKeiNo.equals(inMapSeikyKeiNo))
		{
			// 請求額マイナスフラグ初期値設定
			this.isMinus = false;
			
			// 当月債権発生有無判定
			if (JACStrConst.KARA_MOJI.equals(inMapTgtSaikenAmnt))
			{
				tgtSknUm = JACStrConst.TOGETSU_SAIKEN_UMU_NSI;
			}
			else
			{
				BigDecimal tmpTgtSaikenAmnt = new BigDecimal(inMapTgtSaikenAmnt);
				// 正数の場合
				if (0 <= tmpTgtSaikenAmnt.signum())
				{
					tgtSknUm = JACStrConst.TOGETSU_SAIKEN_UMU_ARI;
				}
				// 負数の場合
				else
				{
					// 請求書作成フラグに「作成しない」を設定
					seikyusSakseiFlg = JACStrConst.SIKY_SAKSEI_FLG_NSI;
					// 請求額マイナスフラグをON
					isMinus = true;
	
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][judgeSeikyusHakkoUmu][isMinus=" + isMinus + "]");
	
					// 請求書発行有無判定を終了
					return sksOputCtrlInfo;
				}
			}
			// 前月・前々月以前の未納債権の存在の有無をチェック行います。
			this.checkSaiken();
		}
		
		// 強制窓口設定理由判定
		String kyoseiMdgcAddRsnCd = null;
		
		// 請求前月．請求方法コード　＝　2（口振）または3（郵振）
		// かつ、請求前月．口座振替結果コード　≠　0（振替正常）
		// かつ、請求データ．請求方法コード　＝　1（窓口）の時
		if ( (JACStrConst.PAY_WAY_CD_KHR.equals(inMapZgtSeikyWayCd) || JACStrConst.PAY_WAY_CD_YHR.equals(inMapZgtSeikyWayCd))
			&& !JACStrConst.HURIKAE_KEKKA_SEIJO.equals(inMapZgtKhriRsltCd)
			&& JACStrConst.PAY_WAY_CD_MDG.equals(inMapSeikyWayCd))
		{
			// 前月口座振替NGを設定
			kyoseiMdgcAddRsnCd = JACStrConst.KYOSEI_MDGC_RSN_CD_KHRI_NG;
		}
		// 請求データ．請求方法コード　＝　1（窓口）
		// かつ、請求データ．契約時請求方法コード　＝　4（クレジット）
		// かつ、請求データ．フロアリミット超過フラグ　＝　1（超過）
		// かつ、請求データ．売上オーソリチェック結果　＝　1（オーソリNG）の時
		else if (JACStrConst.PAY_WAY_CD_MDG.equals(inMapSeikyWayCd)
			&& JACStrConst.PAY_WAY_CD_CRE.equals(inMapMskmPayWay)
			&& JACStrConst.FLOOR_LIMIT_CHOKA_FLG_CHOKA.equals(inMapFloorLimitChokaFlg)
			&& "1".equals(inMapAuthoriRsltFlg))
		{
			// 売上オーソリーチェックNGを設定
			kyoseiMdgcAddRsnCd = JACStrConst.KYOSEI_MDGC_RSN_CD_AUTHORI_NG;
		}
		// 請求データ．請求方法コード　＝　1（窓口）
		// かつ、請求データ.契約時請求方法コード　＝　2（口振）または3（郵振）
		// かつ、請求データ．口座ステータス　＝　090（有効性NG）
		// または、（請求データ．口座ステータス　≠　090かつ、請求データ．請求方法適用調整年月日　＞　請求年月25日）の時
		else if (JACStrConst.PAY_WAY_CD_MDG.equals(inMapSeikyWayCd)
			&& (JACStrConst.PAY_WAY_CD_KHR.equals(inMapMskmPayWay) || JACStrConst.PAY_WAY_CD_YHR.equals(inMapMskmPayWay))
			&& (JACStrConst.KOZA_STAT_NG.equals(inMapKozaStat)
			|| (!JACStrConst.KOZA_STAT_NG.equals(inMapKozaStat) && 0 > inMapSeikyYm.concat("25").compareTo(inMapSeikyWayAplyAdjYmd)))
		)
		{
			// 口座振替手続未完を設定
			kyoseiMdgcAddRsnCd = JACStrConst.KYOSEI_MDGC_RSN_CD_TTDK_MI;
		}
		// v57.00.00 ANK-3943-00-00 ADD START
		// 請求データ．請求方法コード　＝　1（窓口）
		// かつ、請求データ．契約時請求方法コード　＝　4（クレジット）
		// かつ、請求データ．クレジット有効性ＮＧフラグ　＝　0（有効期限切れ（VISA　SMCC））
		else if (JACStrConst.PAY_WAY_CD_MDG.equals(inMapSeikyWayCd)
				&& JACStrConst.PAY_WAY_CD_CRE.equals(inMapMskmPayWay)
				&& JACStrConst.CREDIT_CHECK_RESULT_EXPIRED.equals(inMapCreditYukoseiNgFlg))
		{
			// 有効期限切れ（VISA　SMCC）を設定
			kyoseiMdgcAddRsnCd = JACStrConst.KYOSEI_MDGC_RSN_CD_EXPIRED;
		}
		// 請求データ．請求方法コード　＝　1（窓口）
		// かつ、請求データ．契約時請求方法コード　＝　4（クレジット）
		// 請求データ．クレジット有効性ＮＧフラグ　＝　1（有効性NG）
		else if (JACStrConst.PAY_WAY_CD_MDG.equals(inMapSeikyWayCd)
				&& JACStrConst.PAY_WAY_CD_CRE.equals(inMapMskmPayWay)
				&& JACStrConst.CREDIT_CHECK_RESULT_YUKOSEI_NG.equals(inMapCreditYukoseiNgFlg))
		{
			// 有効性NGを設定
			kyoseiMdgcAddRsnCd = JACStrConst.KYOSEI_MDGC_RSN_CD_YUKOSEI_NG;
		}
		// v57.00.00 ANK-3943-00-00 ADD END
		// それ以外の場合
		else
		{
			// 強制窓口設定なしを設定
			kyoseiMdgcAddRsnCd = JACStrConst.KYOSEI_MDGC_RSN_CD_NSI;
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][judgeSeikyusHakkoUmu][kyoseiMdgcAddRsnCd=" + kyoseiMdgcAddRsnCd + "]");

		// 請求書出力制御情報取得
		sksOputCtrlInfo = searchSksOputCtrlInfo(
				kyoseiMdgcAddRsnCd, inMapZgtSeikyWayCd);


		// 請求書作成フラグを設定
		seikyusSakseiFlg = sksOputCtrlInfo.get(JBSbatCH_M_SKS_OPUT_CTRL.SKS_SAKSEI_FLG);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][judgeSeikyusHakkoUmu][isMinus=" + isMinus + "]");
		
		return sksOputCtrlInfo;
	}
	
	/**
	 * 請求データをもとに、
	 * 債権スキーマを検索し、
	 * 前月・前々月以前の未納債権の存在の有無をチェックを行います。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void checkSaiken() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][checkSaiken]");
		
		// チェック結果をもとに退避情報を更新
		this.prvBfMnoSknUm = FLG_OFF;
		this.prvMnoSknUm = FLG_OFF;
		
		// データ識別　＝　"1"（前月未納債権）の場合
		if(!JACStrConst.KARA_MOJI.equals(inMapZgtMnSaikenFlg))
		{
			// 前月未納債権有無　更新
			this.prvMnoSknUm = FLG_ON;
		}
		// データ識別　＝　"2"（前々月以前未納債権）の場合
		if(!JACStrConst.KARA_MOJI.equals(inMapZZgtMnSaikenFlg))
		{
			// 前々月以前未納債権有無　更新
			this.prvBfMnoSknUm = FLG_ON;
		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][checkSaiken]");
		return;
	}
	
	
	/**
	 * 請求書出力制御情報を取得します。
	 * 
	 * @param inMap 請求書データ
	 * @param kyoseiMdgcAddRsnCd 強制窓口設定理由コード
	 * @param mkmPayWayCd 申込時請求方法コード
	 * @return Map<String, String> 請求書出力制御情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private Map<String, String> searchSksOputCtrlInfo(String kyoseiMdgcAddRsnCd, String mkmPayWayCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][searchSksOputCtrlInfo]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][searchSksOputCtrlInfo][yksGyoumuCd=" + this.yksGyoumuCd + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][searchSksOputCtrlInfo][tgtSknUm=" + this.tgtSknUm + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][searchSksOputCtrlInfo][kyoseiMdgcAddRsnCd=" + kyoseiMdgcAddRsnCd + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][searchSksOputCtrlInfo][mkmPayWayCd=" + mkmPayWayCd + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][searchSksOputCtrlInfo][prvMnoSknUm=" + this.prvMnoSknUm + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][searchSksOputCtrlInfo][prvBfMnoSknUm=" + this.prvBfMnoSknUm + "]");
		
		HashMap<String, String> sksOputCtrlInfo = null;
		
		// 対象インデックスリスト
		ArrayList<Integer> trgIndexList = new ArrayList<Integer>();
		
		// 請求方法コード＝　" "（空白）で請求書出力制御情報リストマップのValueを取得し、
		// 請求データをもとに対象のValueを検索
		trgIndexList = this.selectSksInfList(kyoseiMdgcAddRsnCd, mkmPayWayCd);
		// 対象インデックスリストサイズ
		int size = trgIndexList.size();

		List<HashMap<String, String>> sksOputCtrlInfoList = null;
		if (JACStrConst.SEIKY_MADOGUCHI.equals(inMapSeikyWayCd))
		{
			sksOputCtrlInfoList = sksOputCtrlInfoList1;
		}
		else if (JACStrConst.SEIKY_KHRI.equals(inMapSeikyWayCd))
		{
			sksOputCtrlInfoList = sksOputCtrlInfoList2;
		}
		else if (JACStrConst.SEIKY_YUFUIRI.equals(inMapSeikyWayCd))
		{
			sksOputCtrlInfoList = sksOputCtrlInfoList3;
		}
		else if (JACStrConst.SEIKY_CREDIT.equals(inMapSeikyWayCd))
		{
			sksOputCtrlInfoList = sksOputCtrlInfoList4;
		}

		// ログ出力用のメッセージ内容作成
		StringBuffer sb = new StringBuffer();
		// 請求方法コード
		sb.append(JBSbatCH_M_SKS_OPUT_CTRL.SEIKY_WAY_CD).append("=").append(inMapSeikyWayCd);
		// 請求契約配下サービス契約状態コード
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.SKHK_SVKEI_STAT_CD).append("=").append(inMapSkhkSvkeiStatCd);
		// 請求契約配下サービス契約解約理由識別コード
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.SKHK_SVKEI_DLRE_SKBT_CD).append("=").append(inMapSkhkSvkeiDlreSkbtCd);
		// 請求書発行要否
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.SEIKYUS_HAKKO_YH).append("=").append(inMapSeikyusHakkoYh);
		// 抑止業務パターンコード
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.YOKSI_WORK_PATTERN_CD).append("=").append(this.yksGyoumuCd);
		// 当月債権有無
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.TOGTU_HASSEI_SKN_UM).append("=").append(this.tgtSknUm);
		// 前月未納債権有無
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.ZNGTU_MINO_SKN_UM).append("=").append(this.prvMnoSknUm);
		// 前々月以前未納債権有無
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.ZZNGTU_IZN_MINO_SKN_UM).append("=").append(this.prvBfMnoSknUm);
		// 収納代行会社コード
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.SHNODKCMP_CD).append("=").append(inMapShnodkcmpCd);
		// 未納合算有無
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.MINO_GSAN_UM).append("=").append(inMapGsanSeikyUmFlg);
		// 強制窓口登録理由コード
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.KYOSEI_MDGC_ADD_RSN_CD).append("=").append(kyoseiMdgcAddRsnCd);
		// 申込時請求方法コード
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.MKM_JI_SIKY_WAY_CD).append("=").append(mkmPayWayCd);
		// 請求時請求方法コード
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.SIKY_JI_SIKY_WAY_CD).append("=").append(inMapSikyJiSikyWayCd);
		// 前受金充当有無
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.MAEUK_JUTO_UM).append("=").append(inMapMaeukkinSosaiUmFlg);
		// 通話明細書発行有無
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.TUWA_DTL_HAKKO_UM).append("=").append(inMapTwDtlHakUmFlg);
		// 領収証発行有無
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.RECEIPT_HAKKO_UM).append("=").append(inMapReceiptUm);
		// 督促ステータス
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.TOKUSOKU_STAT).append("=").append(inMapTokusokuStat);
		// 請求金額合計(自)
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.SIKY_AMNT_TOTAL_JI).append("=").append(inMapSeikyAmnt.toPlainString());
		// 請求金額合計(至)
		sb.append(JACStrConst.COMMA).append(JBSbatCH_M_SKS_OPUT_CTRL.SIKY_AMNT_TOTAL_ITA).append("=").append(inMapSeikyAmnt.toPlainString());
		
		// ST-2019-0000004 ADD START
		// 対象インデックス
		Integer trgIndex = null;
		// ST-2019-0000004 ADD END
		
		// 検索結果判定
		if(0 == size)
		{
			// マスタ未存在エラー
			String[] msgParam = new String[]
			{ JBSbatCH_M_SKS_OPUT_CTRL.TABLE_NAME, sb.toString() };
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECHB0270CH, msgParam);
		}
		// 対象インデックスリストサイズ　＝　1の場合
		else if(1 == size)
		{
			// 請求書出力制御情報　設定
			sksOputCtrlInfo = sksOputCtrlInfoList.get(trgIndexList.get(0));
			// ST-2019-0000004 ADD START
			// 対象インデックスを設定
			trgIndex = trgIndexList.get(0);
			// ST-2019-0000004 ADD END
		}
		// 上記以外の場合
		else
		{
			// 対象レコード
			HashMap<String, String> trgMap = new HashMap<String, String>();
			
			sksOputCtrlInfo = null;
			
			// 対象インデックスリスト、請求データをもとに請求書出力制御情報を取得します。
			for(int i = 0; i < size; i++)
			{
				// 対象レコード取得
				trgMap = sksOputCtrlInfoList.get(trgIndexList.get(i));
				// 料金コースコード
				String pcrsCd = trgMap.get(JBSbatCH_M_SKS_OPUT_CTRL.PCRS_CD);
				
				// 対象レコード．料金コースコードが空白の場合
				if(pcrsCd.trim().isEmpty())
				{
					if(sksOputCtrlInfo == null)
					{
						// 対象レコードを請求書出力制御情報に設定
						sksOputCtrlInfo = trgMap;
						// ST-2019-0000004 ADD START
						// 対象インデックスを設定
						trgIndex = trgIndexList.get(i);
						// ST-2019-0000004 ADD END
					}
					
				}
				// 料金コースコードが請求内訳に存在する場合
				else if(this.existSeikyUcwkInfo(pcrsCd))
				{
					// 対象レコードを請求書出力制御情報に設定
					sksOputCtrlInfo = trgMap;
					// ST-2019-0000004 ADD START
					// 対象インデックスを設定
					trgIndex = trgIndexList.get(i);
					// ST-2019-0000004 ADD END
					break;
				}
			}
		}
		
		// ST-2019-0000004 ADD START
		// 窓口請求で督促ステータスがST30、ST40、ST41、ST50かつＥＡＮバーコード種別コードが通常の場合
		if (sksOputCtrlInfo != null && JACStrConst.SEIKY_MADOGUCHI.equals(inMapSeikyWayCd)
				&& (JACStrConst.TOKUSOKU_STAT_KYS_KYK_ZUMI.equals(inMapTokusokuStat)
						|| JACStrConst.TOKUSOKU_STAT_KYOSEI_KAIYAKU_ZUMI.equals(inMapTokusokuStat)
						|| JACStrConst.TOKUSOKU_STAT_TKSK_TUCHI_ZUMI.equals(inMapTokusokuStat)
						|| JACStrConst.TOKUSOKU_STAT_LAW_NSAIKEN_ITK_YO_ZUMI.equals(inMapTokusokuStat))
				&& EAN_BARCODE_SBT_CD_NORMAL.equals(sksOputCtrlInfo.get(JBSbatCH_M_SKS_OPUT_CTRL.EAN_BARCODE_SBT_CD)))
		{
			// 請求書出力制御情報マップ（リアル用）に存在しない場合は要素を追加
			if (!sksOputCtrlInfoMap1.containsKey(trgIndex))
			{
				HashMap<String, String> sksOputCtrlInfoReal = new HashMap<String, String>(sksOputCtrlInfo);
				// ＥＡＮバーコード種別コードにリアルを設定
				sksOputCtrlInfoReal.put(JBSbatCH_M_SKS_OPUT_CTRL.EAN_BARCODE_SBT_CD, EAN_BARCODE_SBT_CD_REAL);
				sksOputCtrlInfoMap1.put(trgIndex, sksOputCtrlInfoReal);
			}
			// 返却する請求書出力制御情報にリアル用の請求書出力制御情報を設定
			sksOputCtrlInfo = sksOputCtrlInfoMap1.get(trgIndex);
		}
		// ST-2019-0000004 ADD END
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][searchSksOputCtrlInfo][検索条件=" + sb.toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][searchSksOputCtrlInfo][sksOputCtrlInfo=" + sksOputCtrlInfo.toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][searchSksOputCtrlInfo]");
		
		return sksOputCtrlInfo;
	}
	
	/**
	 * 請求データをもとに条件を満たす請求書出力制御情報のインデックスを取得し、
	 * その結果を返却します。
	 * 
	 * @param inMap 請求データ
	 * @param trgMapList 請求書出力制御情報リスト
	 * @param kyoseiMdgcAddRsnCd 強制窓口設定理由コード
	 * @param mkmPayWayCd 申込時請求方法コード
	 * @return ArrayList<Integer> 条件を満たす請求書出力制御情報のインデックス
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private ArrayList<Integer> selectSksInfList(
			String kyoseiMdgcAddRsnCd, String mkmPayWayCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectSksInfList][kyoseiMdgcAddRsnCd=" + kyoseiMdgcAddRsnCd + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectSksInfList][mkmPayWayCd=" + mkmPayWayCd + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectSksInfList][inMapSeikyWayCd=" + inMapSeikyWayCd + "]");
		// 請求方法コード
		List<HashMap<String, String>> trgMapList = null;
		
		if (JACStrConst.SEIKY_MADOGUCHI.equals(inMapSeikyWayCd))
		{
			trgMapList = sksOputCtrlInfoList1;
		}
		else if (JACStrConst.SEIKY_KHRI.equals(inMapSeikyWayCd))
		{
			trgMapList = sksOputCtrlInfoList2;
		}		
		else if (JACStrConst.SEIKY_YUFUIRI.equals(inMapSeikyWayCd))
		{
			trgMapList = sksOputCtrlInfoList3;
		}		
		else if (JACStrConst.SEIKY_CREDIT.equals(inMapSeikyWayCd))
		{
			trgMapList = sksOputCtrlInfoList4;
		}

		// 対象インデックスリスト
		ArrayList<Integer> trgIndexList = new ArrayList<Integer>();
		
		// 前回対象インデックスリストサイズ
		int prvSize = 0;
		
		String bufKey = null;

		for (int i = 0; i < trgMapList.size(); i++)
		{
			// リストサイズ
			int size = trgIndexList.size();
			
			// リストサイズ＞０　かつ　前回リストサイズ　＝　リストサイズの場合
			if(size > 0 && size == prvSize)
			{
				break;
			}
			
			// 前回リストサイズ更新
			prvSize = size;
			
			Map<String, String> tmpMap = trgMapList.get(i);
			
			// 請求方法コード
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.SEIKY_WAY_CD);
			if (!bufKey.trim().isEmpty() && !inMapSeikyWayCd.equals(bufKey))
			{
				continue;
			}
			
			// 請求契約配下サービス契約状態コード
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.SKHK_SVKEI_STAT_CD);
			if (!bufKey.trim().isEmpty() && !inMapSkhkSvkeiStatCd.equals(bufKey))
			{
				continue;
			}
			
			// 請求契約配下サービス契約解約理由識別コード
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.SKHK_SVKEI_DLRE_SKBT_CD);
			if (!bufKey.trim().isEmpty() && !inMapSkhkSvkeiDlreSkbtCd.equals(bufKey))
			{
				continue;
			}
			
			// 請求書発行要否
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.SEIKYUS_HAKKO_YH);
			if (!bufKey.trim().isEmpty() && !inMapSeikyusHakkoYh.equals(bufKey))
			{
				continue;
			}
			
			// 抑止業務パターンコード
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.YOKSI_WORK_PATTERN_CD);
			if (!bufKey.trim().isEmpty() && !this.yksGyoumuCd.equals(bufKey))
			{
				continue;
			}
			
			// 当月債権有無
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.TOGTU_HASSEI_SKN_UM);
			if (!bufKey.trim().isEmpty() && !this.tgtSknUm.equals(bufKey))
			{
				continue;
			}
		
			// 前月未納債権有無
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.ZNGTU_MINO_SKN_UM);
			if(!bufKey.trim().isEmpty() && !this.prvMnoSknUm.equals(bufKey))
			{
				continue;
			}
			
			// 前々月以前未納債権有無
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.ZZNGTU_IZN_MINO_SKN_UM);
			if(!bufKey.trim().isEmpty() && !this.prvBfMnoSknUm.equals(bufKey))
			{
				continue;
			}
			
			// 収納代行会社コード
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.SHNODKCMP_CD);
			if (!bufKey.trim().isEmpty() && !inMapShnodkcmpCd.equals(bufKey))
			{
				continue;
			}
			
			// 未納合算有無
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.MINO_GSAN_UM);
			if (!bufKey.trim().isEmpty() && !inMapGsanSeikyUmFlg.equals(bufKey))
			{
				continue;
			}
			
			// 強制窓口登録理由コード
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.KYOSEI_MDGC_ADD_RSN_CD);
			if (!bufKey.trim().isEmpty() && !kyoseiMdgcAddRsnCd.equals(bufKey))
			{
				continue;
			}
			
			// 申込時請求方法コード
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.MKM_JI_SIKY_WAY_CD);
			if (!bufKey.trim().isEmpty() && !mkmPayWayCd.equals(bufKey))
			{
				continue;
			}
			// 請求時請求方法コード
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.SIKY_JI_SIKY_WAY_CD);
			if (!bufKey.trim().isEmpty() && !inMapSikyJiSikyWayCd.equals(bufKey))
			{
				continue;
			}
			
			// 前受金充当有無
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.MAEUK_JUTO_UM);
			if (!bufKey.trim().isEmpty() && !inMapMaeukkinSosaiUmFlg.equals(bufKey))
			{
				continue;
			}
			
			// 通話明細書発行有無
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.TUWA_DTL_HAKKO_UM);
			if (!bufKey.trim().isEmpty() && !inMapTwDtlHakUmFlg.equals(bufKey))
			{
				continue;
			}
			
			// 領収証発行有無
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.RECEIPT_HAKKO_UM);
			if (!bufKey.trim().isEmpty() && !inMapReceiptUm.equals(bufKey))
			{
				continue;
			}
			
			// 督促ステータス
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.TOKUSOKU_STAT);
			// 入力．督促ステータス
			String inTkSt = inMapTokusokuStat;
			// 入力．督促ステータスが""（空文字）の場合
			if(JACStrConst.KARA_MOJI.equals(inTkSt))
			{
				// 督促ステータス＝"00"（督促なし）として処理する。
				inTkSt = JACStrConst.TOKUSOKU_STAT_NASHI;
			}
			if (!bufKey.trim().isEmpty() && !inTkSt.equals(bufKey))
			{
				continue;
			}
			
			// 前月以前請求有無
			bufKey = tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.ZNGTU_IZN_SIKY_UM);
			if (!bufKey.trim().isEmpty() && !this.tempZenSeikyUmu.equals(bufKey))
			{
				continue;
			}
			
			// 請求金額合計(自)
			BigDecimal sikyAmntTotalJi = new BigDecimal(tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.SIKY_AMNT_TOTAL_JI));
			if (!(0 <= inMapSeikyAmnt.compareTo(sikyAmntTotalJi))
					&& !MUSI_SIKY_AMNT_TOTAL_JI.equals(sikyAmntTotalJi.toPlainString()))
			{
				continue;
			}
			
			// 請求金額合計(至)
			BigDecimal sikyAmntTotalIta = new BigDecimal(tmpMap.get(JBSbatCH_M_SKS_OPUT_CTRL.SIKY_AMNT_TOTAL_ITA));
			if (!(inMapSeikyAmnt.compareTo(sikyAmntTotalIta) <= 0)
					&& !MUSI_SIKY_AMNT_TOTAL_ITA.equals(sikyAmntTotalIta.toPlainString()))
			{
				continue;
			}
			
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectSksInfList][selectSksInfList=" + tmpMap.toString() + "]");
			// 対象インデックスリストにインデックス追加
			trgIndexList.add(i);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][searchSksOputCtrlInfo][請求契約番号=" + inMapSeikyKeiNo
					+ "：出力制御-" + inMapSeikyWayCd + "-"
					+ JBSbatStringUtil.padNumFormString(Integer.toString(i + 1), 4) + "]");
		}
		return trgIndexList;
	}
	
	
	/**
	 * 条件指定された料金コースコードに紐付く請求内訳情報が存在するか確認します。
	 * 
	 * @param inMap 請求データ
	 * @param pcrsCd 料金コースコード
	 * @return 存在有無（有：true、無：false）
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private boolean existSeikyUcwkInfo(String pcrsCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][existSeikyUcwkInfo]");
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		// 請求番号
		paramList.setValue(inMapSeikyNo);
		// 請求契約番号
		paramList.setValue(inMapSeikyKeiNo);
		// 料金コースコード
		paramList.setValue(pcrsCd);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][existSeikyUcwkInfo][paramList=" + paramList.getList().toString() + "]");
		
		// SQL実行
		executeCH_T_SEIKY_UCWK_CH_SELECT_006(paramList.getList().toArray());
		JBSbatCommonDBInterface seikyUcwk = db_CH_T_SEIKY_UCWK.selectNext();
		
		// 取得結果判定
		boolean result = false;
		if (seikyUcwk != null)
		{
			result = true;
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][existSeikyUcwkInfo][result=" + result + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][existSeikyUcwkInfo]");
		
		return result;
	}	

	/**
	 * 抑止業務パターンコードを取得します。
	 * 
	 * @return 抑止業務パターンコード
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private String getYoksiWorkCd() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getYoksiWorkCd]");
		
		// 判定対象となる抑止コードのリストを取得
		List<String> keyList = selectYoksiCdList();
		
		// 抑止コードが取得できた場合、抑止パターン定義マップから抑止業務パターンコードを取得
		String yoksiWorkCd = null;
		if (0 < keyList.size())
		{
			yoksiWorkCd = yoksiPtnTeigiMap.get(keyList);
		}
		else
		{
			// 取得データなしの場合
			yoksiWorkCd = yoksiPtnTeigiMap.get(nonKeyList);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getYoksiWorkCd][yoksiWorkCd=" + yoksiWorkCd + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getYoksiWorkCd]");

		return yoksiWorkCd;
	}
	
	/**
	 * 抑止コードリストを取得します。
	 * 
	 * @return 抑止コードリスト
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private List<String> selectYoksiCdList() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectYoksiCdList]");

		
		// 結果取得
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectYoksiCdList][inMapSeikyKeiNo=" + inMapSeikyKeiNo + "]");
		List<String> resultList = chkKK0541Map.get(inMapSeikyKeiNo);
		if(resultList != null)
		{
			yoksiCdList = resultList;
		}
		else
		{
			yoksiCdList = new ArrayList<String>();
		}
		assert 	yoksiCdList != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectYoksiCdList][yoksiCdList=" + yoksiCdList.toString() + "]") : true;
		
		// 判定対象の抑止コードのみ抽出する
		List<String> keyList = new ArrayList<String>();
		for (String yoksiCd : yoksiCdList)
		{
			if (trgtYoksiCdList.contains(yoksiCd))
			{
				keyList.add(yoksiCd);
			}
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectYoksiCdList]");
		
		return keyList;
	}
	
	/**
	 * 消費税の出力抑止対象であるかを判定します。
	 * 合算請求有無フラグ、または前受金相殺有無フラグのどちらかが有(1)の場合、
	 * falseを返し、両方無(0)の場合はtrueを返します。
	 * 
	 * @return 消費税を出力する場合はtrue
	 */
	private boolean isOutputTax()
	{
		if (JACStrConst.GSAN_FLG_ON.equals(inMapGsanSeikyUmFlg) ||
			JACStrConst.MAEUKKIN_SOSAI_UM_FLG_ARI.equals(inMapMaeukkinSosaiUmFlg))
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 領収消費税額の出力抑止対象であるかを判定します。
	 * 前月未収額、または前月前受金充当額のどちらか存在した場合、
	 * falseを返し、両方未存在の場合はtrueを返します。
	 * 
	 * @return 領収消費税額を出力する場合はtrue
	 */
	private boolean isOutputReceiptTax()
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSeikyData][inMapZgtMaeAmnt=" + inMapZgtMaeAmnt + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSeikyData][inMapZgtMiAmnt=" + inMapZgtMiAmnt + "]");
		
		if (!JACStrConst.KARA_MOJI.equals(inMapZgtMaeAmnt) ||
			!JACStrConst.KARA_MOJI.equals(inMapZgtMiAmnt))
		{
			return false;
		}
		
		return true;
	}

	//v34.00.00 Add Start
	/**
	 * ｅｏ電気抑止パターンコードリストを作成します
	 */
	private void setEoElecyoksiCdList(String eoElecDhbtPatCd) 
	{
		// ｅｏ電気抑止コード対象外リストを初期化する
		this.eoElecyoksiCdList = new ArrayList<String>();
		
		// 入力.ｅｏ電気抑止コードがnullの場合は処理を終了する
		if(JCHStringUtil.isNullBlank(eoElecDhbtPatCd))
		{
			return;
		}
		
		// 業務パラメータより取得したｅｏ電気抑止パターンコードを抑止パターンコードリストに追加する
		this.eoElecyoksiCdList = Arrays.asList(eoElecDhbtPatCd.split(JACStrConst.COMMA));
		
	}

	/**
	 * ｅｏ電気請求書発行情報再設定
	 * @param sksOputCtrlInfo
	 */
	private void setEoElecSksHakkoYh(Map<String, String> sksOputCtrlInfo) {
	
		// 請求書作成フラグに"1"（請求書作成する）を設定
		seikyusSakseiFlg = JACStrConst.SIKY_SAKSEI_FLG_ARI;
		
		// インフォメーションパターンコードにｅｏ電気単独契約＿インフォメーションパターンコードを設定
		sksOputCtrlInfo.put(JBSbatCH_M_SKS_OPUT_CTRL.INFO_PATTERN_CD, this.eoElecInfoPatCd);
		
		// 同封物パターンコードにｅｏ電気単独契約＿同封物コードを設定
		sksOputCtrlInfo.put(JBSbatCH_M_SKS_OPUT_CTRL.DOHUBT_PATTERN_CD, this.eoElecDhbtPatCd);
	}
	//v34.00.00 Add End

}
