/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHHuryoCustAdd
*	ソースファイル名	：JBSbatCHHuryoCustAdd.java
*	作成者				：富士通　
*	作成日				：2012年01月11日
*＜機能概要＞
*　不良顧客登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/01/11   富士通		新規作成
*	v3.00		2012/06/12   FJ）冨井	【ANK-0024-04-00】当月取得・業パラ取得名変更・サービス用マップ値変更・取得SQL変更
*	v3.01		2012/08/17   FJ）冨井	【IT2-2012-0001578】不良顧客分の金額チェック修正
*	v3.02.00	2012/08/27	 FJ）成田	【TG1-2012-0000139】料金対応記録登録部品クラスの初期化位置を変更
*	v3.03		2012/12/17   FJ）小野	【IT2-2012-0002045】督促処理で不良顧客登録サービスIFがエラーになる障害を対応
*	v3.04		2012/12/19   FJ）小野	【ST4-2012-0000170】不良顧客登録性能障害
*	v3.05		2013/02/09   FJ）小野	【ST4-2013-0000143】不良顧客登録性能障害
*                                        (シェル内の処理構成を変更し、不良顧客が未存在のデータのみをinputファイルとする)
*	v4.00		2013/04/21   FJ) 小柴   【内部管理番号-0000535】不良顧客．不良顧客住所名への登録文字列を242バイトでカットするように修正
*	v8.00		2014/05/26   FJ) 狭間   【OM-2014-0001928】入力ファイルの督促番号が空の場合、請求契約番号をキーに督促スキーマから取得する
*	v9.00		2014/07/24   FJ) 早崎   【OM-2014-0002515】不良顧客スキーマ更新時の料金対応記録処理を削除
*	v37.00		2018/06/25   FJ) 森脇   【OM-2018-0000551】不良顧客テーブル登録（契約者）滞納額が未設定の場合は0を設定
*********************************************************************/
package eo.business.service;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCHbatPrcTaiokrkAdd;
import eo.business.common.JCHbatSeikyKaknoBusinessUtil;
import eo.business.common.JTUBatStringUtil;
import eo.business.util.file.JBSbatCHIFM096;
import eo.business.util.file.JBSbatCHIFM173;
import eo.business.util.table.JBSbatCK_T_HURYO_CUST;
import eo.business.util.table.JBSbatCH_T_TOKUSOKU;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCRUtilCommon;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHHuryoCustAdd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(不良顧客)*/
	private static final String D_TBL_NAME_CK_T_HURYO_CUST = "CK_T_HURYO_CUST";

	/** テーブルアクセスクラス(不良顧客)*/
	private JBSbatSQLAccess db_CK_T_HURYO_CUST_INSERT = null;

	/** テーブルアクセスクラス(不良顧客)*/
	private JBSbatSQLAccess db_CK_T_HURYO_CUST_UPDATE = null;

	/** テーブルアクセスクラス(不良顧客)*/
	private JBSbatSQLAccess db_CK_T_HURYO_CUST_DELETE = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** シーケンス取得用ファンクション（不良顧客番号） */
	private static final String SEQ_HURYO_CUST_NO_NEXTVAL = "JBSbatSQLAccess.GET_NEXT_SEQ(SEQ_HURYO_CUST_NO.NEXTVAL, '', 12)";

	/** 退避．業務機能識別コード（移動体料金）*/
	private String tihHuryoCust = null;
	
	/** ZERO */
	private static final String STRING_ZERO = "0";

	/** 料金対応記録登録部品 */
	private JCHbatPrcTaiokrkAdd jCHbatPrcTaiokrkAdd = null;
	
	/** 退避．請求年月（当月）*/
	private String tihSikyYm = null;

	/** 退避キー （請求契約番号を保持）*/
	private String saveSeikyKeiNo = null;

	/** 退避キー （サービス契約ステータスを保持）*/
	private String saveSvcKeiStat = null;
	
	/** 項目長（不良顧客.不良顧客住所名） */
	private static final int HURYO_CUST_AD_NM_LENGTH = 242;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CK_T_HURYO_CUST_INSERT = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_HURYO_CUST);
		db_CK_T_HURYO_CUST_UPDATE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_HURYO_CUST);
		db_CK_T_HURYO_CUST_DELETE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_HURYO_CUST);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		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 + "]");
		
		// パラメータ取得部品の初期処理
		JACbatParamUtil paramUtil = new JACbatParamUtil(commonItem);
		// パラメータ取得部品(業務パラメータ)を使用し、以下を取得後、「移動体料金」に保持
		tihHuryoCust = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_WKS_HURY_CUST);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][tihHuryoCust=" + tihHuryoCust + "]");
		// パラメータ取得部品のクローズ処理
		paramUtil.close();
		
		// 当月取得
		getSikyYm();

		// 料金対応記録登録部品の初期処理
		jCHbatPrcTaiokrkAdd = new JCHbatPrcTaiokrkAdd(super.commonItem);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][inMap = " + inMap.getMap().toString() + "]") ;

		// 請求契約番号
		String inSeikyKeiNo = inMap.getString(JBSbatCHIFM173.SEIKY_KEI_NO);
		// サービス契約ステータス
		String inSvcKeiStat = inMap.getString(JBSbatCHIFM173.SVC_KEI_STAT);
		// 不良顧客番号(nullなら存在しないため登録、nullでなければ存在するため更新)
		String inMapHuryoCustNo = inMap.getString(JBSbatCHIFM173.HURYO_CUST_NO);
		// 不良顧客登録コード
		String inHuryoCustAddCd = inMap.getString(JBSbatCHIFM173.HURYO_CUST_ADD_CD);
		// 滞納額
		String ryokin = inMap.getString(JBSbatCHIFM173.NONPAY_AMNT);
		// 督促番号
		String tokusokuNo = inMap.getString(JBSbatCHIFM173.TOKUSOKU_NO);

		// 督促番号が空の場合
		if(JACStrConst.KARA_MOJI.equals(tokusokuNo))
		{
			// ログ出力（ＤＢ未存在エラー）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW, new String[]
			{ JBSbatCH_T_TOKUSOKU.TABLE_NAME, inSeikyKeiNo });
		}
		
		// 退避キーがない(入力１件目) or キーブレイク時
		if (saveSeikyKeiNo == null || !saveSeikyKeiNo.equals(inSeikyKeiNo))
		{
			// 請求契約番号を保存
			saveSeikyKeiNo = inSeikyKeiNo;

			// 請求契約番号ごとのサービス契約ステータスを保存(ソート順で最小のサービス契約ステータス)
			saveSvcKeiStat = inSvcKeiStat;
		}

		// 登録処理
		if (JCRUtilCommon.isNull(inMapHuryoCustNo))
		{
			// サービス契約ステータスが"920"(キャンセル済)でない
			if (!JACStrConst.SVC_KEI_STAT_CNCL_ZUMI.equals(inSvcKeiStat))
			{
				// 課金先番号
				String inKakinsNo = inMap.getString(JBSbatCHIFM173.KAKINS_NO);
				// SYSID
				String inSysid = inMap.getString(JBSbatCHIFM173.SYSID);

				// 不良顧客登録コード（請求先）
				if (JACStrConst.HURYO_CUST_ADD_CD_SEIKY.equals(inHuryoCustAddCd))
				{
					// 不良顧客情報（請求先）の登録
					insertHuryoCustSeiky(inMap);

					// 料金対応記録の登録
					this.prcTaiokrkAdd(inMap, JACStrConst.TKRK_SBTD_NG_CUST_ADD);
				}
				else if (JACStrConst.HURYO_CUST_ADD_CD_KEISHA.equals(inHuryoCustAddCd))
				// 不良顧客登録コード（契約者）
				{
					// 課金先番号、お客様＿ＳＹＳＩＤが存在する(nullの場合 = 請求先併合されている場合)
					if (!JCRUtilCommon.isNull(inKakinsNo) && !JCRUtilCommon.isNull(inSysid))
					{
						// 不良顧客情報（契約者）の登録
						insertHuryoCustKeisha(inMap, ryokin);
					}
				}
				else if (JACStrConst.HURYO_CUST_ADD_CD_SKSHA.equals(inHuryoCustAddCd))
				// 不良顧客登録コード（親権者）
				{
					// 課金先番号、お客様＿ＳＹＳＩＤが存在する(nullの場合 = 請求先併合されている場合)
					if (!JCRUtilCommon.isNull(inKakinsNo) && !JCRUtilCommon.isNull(inSysid))
					{
						// お客様＜個人＞＿ＳＹＳＩＤ
						String inKojinSysid = inMap.getString(JBSbatCHIFM173.KOJIN_SYSID);
						// 親権者名
						String inSkshaNm = inMap.getString(JBSbatCHIFM173.SKSHA_NM);

						// お客様＜個人＞ の場合
						if(!JCRUtilCommon.isNull(inKojinSysid) && !JCRUtilCommon.isNull(inSkshaNm))
						{
							// 不良顧客情報（親権者）の登録
							insertHuryoCustShinkensha(inMap);
						}
					}
				}
			}
		}
		else
		{
			// 更新処理 or 削除処理
			// 対象の請求契約番号に紐づく全てのサービス契約のサービス契約状態がキャンセル済の場合
			// bsortで請求契約番号、サービス契約状態で昇順ソートしているため、
			// 退避.サービス契約ステータスがキャンセル済の場合、
			// 「対象の請求契約番号に紐づく全てのサービス契約のサービス契約状態がキャンセル済」であると判断する

			// 削除処理
			if (JACStrConst.SVC_KEI_STAT_CNCL_ZUMI.equals(saveSvcKeiStat))
			{
				// 不良顧客の不良顧客登録コードが請求先の場合
				if (JACStrConst.HURYO_CUST_ADD_CD_SEIKY.equals(inHuryoCustAddCd))
				{
					// 削除
					deleteHuryoCust(inMapHuryoCustNo);

					// 料金対応記録の登録
					this.prcTaiokrkAdd(inMap, JACStrConst.TKRK_SBTD_NG_CUST_DEL);
				}
				else if (JACStrConst.HURYO_CUST_ADD_CD_SKSHA.equals(inHuryoCustAddCd))
				{
					// 不良顧客の不良顧客登録コードが親権者の場合
					// お客様＜個人＞＿ＳＹＳＩＤ
					String inKojinSysid = inMap.getString(JBSbatCHIFM173.KOJIN_SYSID);
					// 親権者名
					String inSkshaNm = inMap.getString(JBSbatCHIFM173.SKSHA_NM);

					// お客様＜個人＞＿ＳＹＳＩＤが存在し、親権者名が空でない場合
					if(!JCRUtilCommon.isNull(inKojinSysid) && JCRUtilCommon.isNull(inSkshaNm))
					{
						// 削除
						deleteHuryoCust(inMapHuryoCustNo);
					}
				}
				else
				{
					// 削除
					deleteHuryoCust(inMapHuryoCustNo);
				}
			}
			else
			{
				// 課金先番号
				String inKakinsNo = inMap.getString(JBSbatCHIFM173.KAKINS_NO);
				// SYSID
				String inSysid = inMap.getString(JBSbatCHIFM173.SYSID);

				// 更新処理
				// 不良顧客登録コードが契約者であり、かつ
				// サービス契約ステータスがキャンセル済でない、かつ
				// 滞納額が取得できた場合
				if (JACStrConst.HURYO_CUST_ADD_CD_KEISHA.equals(inHuryoCustAddCd) && !JACStrConst.SVC_KEI_STAT_CNCL_ZUMI.equals(inSvcKeiStat)
						&& !JCRUtilCommon.isNull(ryokin))
				{
					updateHuryoCustKeisha(inMap, inMapHuryoCustNo, ryokin);
				}
				// 不良顧客登録コード（請求先）
				else if (JACStrConst.HURYO_CUST_ADD_CD_SEIKY.equals(inHuryoCustAddCd))
				{
					// 不良顧客情報（請求先）の更新
					updateHuryoCustSeiky(inMap, inMapHuryoCustNo);

					//OM-2014-0002515 DEL START
					//// 料金対応記録の登録
					//this.prcTaiokrkAdd(inMap, JACStrConst.TKRK_SBTD_NG_CUST_ADD);
					//OM-2014-0002515 DEL END
				}
				else if (JACStrConst.HURYO_CUST_ADD_CD_KEISHA.equals(inHuryoCustAddCd))
				// 不良顧客登録コード（契約者）
				{
					// 課金先番号、お客様＿ＳＹＳＩＤが存在する(nullの場合 = 請求先併合されている場合)
					if (!JCRUtilCommon.isNull(inKakinsNo) && !JCRUtilCommon.isNull(inSysid))
					{
						// 不良顧客情報（契約者）の更新
						updateHuryoCustKeisha(inMap, inMapHuryoCustNo, JACStrConst.KARA_MOJI);
					}
				}
				else if (JACStrConst.HURYO_CUST_ADD_CD_SKSHA.equals(inHuryoCustAddCd))
				// 不良顧客登録コード（親権者）
				{
					// 課金先番号、お客様＿ＳＹＳＩＤが存在する(nullの場合 = 請求先併合されている場合)
					if (!JCRUtilCommon.isNull(inKakinsNo) && !JCRUtilCommon.isNull(inSysid))
					{
						// お客様＜個人＞＿ＳＹＳＩＤ
						String inKojinSysid = inMap.getString(JBSbatCHIFM173.KOJIN_SYSID);
						// 親権者名
						String inSkshaNm = inMap.getString(JBSbatCHIFM173.SKSHA_NM);

						// お客様＜個人＞ の場合
						if(!JCRUtilCommon.isNull(inKojinSysid) && !JCRUtilCommon.isNull(inSkshaNm))
						{
							// 不良顧客情報（親権者）の更新
							updateHuryoCustShinkensha(inMap, inMapHuryoCustNo);
						}
					}
				}
			}

		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 文字列がnullかどうかを判定し、nullの場合空文字にして返します。
	 * 
	 * @param str 入力文字列
	 * @return String 入力文字列または空文字
	 */
	private String chgeNullToKara(String str)
	{
		String rtnStr = JACStrConst.KARA_MOJI;
		
		if(null != str)
		{
			rtnStr = str;
		}
		return rtnStr;
	}
	
	/**
	 * 文字を連結します
	 * @param string　文字
	 * @return strBuf　連結した文字列
	 */
	private String makeStr(String ...string)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeStr]");
		
		StringBuilder strBuf = new StringBuilder();
		for(String str:string){
			strBuf.append(str);
		}

		// DBには全角文字で登録されているため文字数を取得
		int length = strBuf.length();

		// 合計文字数が121文字を超えている場合、切り捨てる
		if (length > 121)
		{
			return (strBuf.substring(0, 121).toString());
		}

		return strBuf.toString();
	}
	
	/**
	 * 料金対応記録を登録します。
	 * 
	 * @param inMap        督促対象情報
	 * @param taioKirokSbtCd 料金対応記録種別詳細コード
	 * @throws Exception 業務サービス内で発生した例外全般
	 */

	private void prcTaiokrkAdd(JBSbatServiceInterfaceMap inMap, String taioKirokSbtCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][prcTaiokrkAdd]");
		assert 	inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][prcTaiokrkAdd][inMap=" + inMap.getMap().toString() + "]") : true;
		
		// 料金対応記録登録データの設定
		JBSbatServiceInterfaceMap prcTaioInMap = new JBSbatServiceInterfaceMap();
		{
			// 01.請求契約番号
			prcTaioInMap.setString(JBSbatCHIFM096.SEIKY_KEI_NO, 				inMap.getString(JBSbatCHIFM173.SEIKY_KEI_NO));
			// 02.サービス契約番号
			prcTaioInMap.setString(JBSbatCHIFM096.SVC_KEI_NO, 					null);
			// 03.対応年月日時分秒
			prcTaioInMap.setString(JBSbatCHIFM096.TAIO_DTM, 					super.opeDate.concat(JCCBatCommon.getSysDateTimeStamp().substring(8, 17)));
			// 04.料金対応記録種別コード
			prcTaioInMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_CD, 		JACStrConst.TKRK_SBT_TOKUSOKU_DATA_SAKSEI);
			// 05.料金対応記録種別詳細コード
			prcTaioInMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_DTL_CD, 	taioKirokSbtCd);
			// 06.記録対象年月
			prcTaioInMap.setString(JBSbatCHIFM096.KIROK_TG_YM, 					null);
			// 07.督促番号
			prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_NO, 					inMap.getString(JBSbatCHIFM173.TOKUSOKU_NO));
			// 08.督促異動番号
			prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_IDO_NO, 				null);
			// 09.請求番号
			prcTaioInMap.setString(JBSbatCHIFM096.SEIKY_NO,						null);
			// 10.金庫番号
			prcTaioInMap.setString(JBSbatCHIFM096.KNK_NO, 						null);
			// 11.債権番号
			prcTaioInMap.setString(JBSbatCHIFM096.SAIKEN_NO, 					null);
			// 12.入金番号
			prcTaioInMap.setString(JBSbatCHIFM096.NYUKIN_NO, 					null);
			// 13.電子ファイル管理番号
			prcTaioInMap.setString(JBSbatCHIFM096.EFILE_KANRI_NO, 				null);
			// 14.対応履歴連動対象フラグ
			prcTaioInMap.setString(JBSbatCHIFM096.TAIORRKI_RENDO_TG_FLG, 		JACStrConst.TAIORRKI_RENDO_TG_FLG_HIHYOJI);
			// 15.変更前金額
			prcTaioInMap.setString(JBSbatCHIFM096.AMNT_CHBF, 					null);
			// 16.変更後金額
			prcTaioInMap.setString(JBSbatCHIFM096.AMNT_CHAF, 					null);
			// 17.変更前督促ステータス
			prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHBF, 			null);
			// 18.変更後督促ステータス
			prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHAF, 			null);
			// 19.変更前金庫料金項目コード
			prcTaioInMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHBF, 			null);
			// 20.変更後金庫料金項目コード
			prcTaioInMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHAF, 			null);
			// 21.督促メールパターン
			prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_ML_PTN_CD, 			null);
			// 22.変更前補償費扱いフラグ
			prcTaioInMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHBF, 		null);
			// 23.変更後補償費扱いフラグ
			prcTaioInMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHAF, 		null);
			// 24.記事
			prcTaioInMap.setString(JBSbatCHIFM096.KIJI, 						null);
		}
		
		// 料金対応記録登録を実行
		jCHbatPrcTaiokrkAdd.prcTaiokrkAdd(prcTaioInMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute][prcTaioInMap = " + prcTaioInMap.getMap().toString() + "]") ;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][prcTaiokrkAdd]");
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");

		db_CK_T_HURYO_CUST_INSERT.clearBatch();
		db_CK_T_HURYO_CUST_UPDATE.clearBatch();
		db_CK_T_HURYO_CUST_DELETE.clearBatch();

		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CK_T_HURYO_CUST_INSERT.close();
		db_CK_T_HURYO_CUST_UPDATE.close();
		db_CK_T_HURYO_CUST_DELETE.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/

		jCHbatPrcTaiokrkAdd.close();

		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	不良顧客番号				HURYO_CUST_NO
	 *		 	不良顧客登録コード				HURYO_CUST_ADD_CD
	 *		 	加入者交換出力開始年月				KNYSHA_KOKAN_OUTPUT_STA_YM
	 *		 	ＳＹＳＩＤ				SYSID
	 *		 	請求契約番号				SEIKY_KEI_NO
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	顧客番号				CUST_NO
	 *		 	督促番号				TOKUSOKU_NO
	 *		 	多重申込グループコード				TAJU_MSKM_GRP_CD
	 *		 	契約者タイプコード				KEISHA_TYPE_CD
	 *		 	不良顧客名				HURYO_CUST_NM
	 *		 	不良顧客カナ名				HURYO_CUST_KANA
	 *		 	不良顧客性別コード				HURYO_CUST_SEX_CD
	 *		 	不良顧客生年月日				HURYO_CUST_BIRTHD
	 *		 	不良顧客電話番号				HURYO_CUST_TELNO
	 *		 	不良顧客移動電話番号				HURYO_CUST_MOVE_TELNO
	 *		 	不良顧客住所コード				HURYO_CUST_AD_CD
	 *		 	不良顧客郵便番号				HURYO_CUST_PCD
	 *		 	不良顧客都道府県名				HURYO_CUST_STATE_NM
	 *		 	不良顧客市区町村名				HURYO_CUST_CITY_NM
	 *		 	不良顧客大字通称名				HURYO_CUST_OAZTSU_NM
	 *		 	不良顧客字丁目名				HURYO_CUST_AZCHO_NM
	 *		 	不良顧客住所名				HURYO_CUST_AD_NM
	 *		 	不良顧客番地号				HURYO_CUST_BNCHIGO
	 *		 	不良顧客住所補記・建物名				HURYO_CUST_ADRTTM
	 *		 	不良顧客住所補記・部屋番号				HURYO_CUST_ADRRM
	 *		 	不良顧客住所手動入力フラグ				HRYCST_AD_MAN_INPUT_FLG
	 *		 	職業コード				SHOKUGYO_CD
	 *		 	業種コード				GSHU_CD
	 *		 	親権者続柄コード				SKSHA_ZOKUGARA_CD
	 *		 	滞納額				NONPAY_AMNT
	 *		 	不良顧客事業者コード				HURYO_CUST_JIGYOSHA_CD
	 *		 	不良顧客補足備考				HURYO_CUST_HSK_BIKO
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_HURYO_CUST_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("HURYO_CUST_NO", setParam[0]);
		setMap.setValue("HURYO_CUST_ADD_CD", setParam[1]);
		setMap.setValue("KNYSHA_KOKAN_OUTPUT_STA_YM", setParam[2]);
		setMap.setValue("SYSID", setParam[3]);
		setMap.setValue("SEIKY_KEI_NO", setParam[4]);
		setMap.setValue("SVC_KEI_NO", setParam[5]);
		setMap.setValue("CUST_NO", setParam[6]);
		setMap.setValue("TOKUSOKU_NO", setParam[7]);
		setMap.setValue("TAJU_MSKM_GRP_CD", setParam[8]);
		setMap.setValue("KEISHA_TYPE_CD", setParam[9]);
		setMap.setValue("HURYO_CUST_NM", setParam[10]);
		setMap.setValue("HURYO_CUST_KANA", setParam[11]);
		setMap.setValue("HURYO_CUST_SEX_CD", setParam[12]);
		setMap.setValue("HURYO_CUST_BIRTHD", setParam[13]);
		setMap.setValue("HURYO_CUST_TELNO", setParam[14]);
		setMap.setValue("HURYO_CUST_MOVE_TELNO", setParam[15]);
		setMap.setValue("HURYO_CUST_AD_CD", setParam[16]);
		setMap.setValue("HURYO_CUST_PCD", setParam[17]);
		setMap.setValue("HURYO_CUST_STATE_NM", setParam[18]);
		setMap.setValue("HURYO_CUST_CITY_NM", setParam[19]);
		setMap.setValue("HURYO_CUST_OAZTSU_NM", setParam[20]);
		setMap.setValue("HURYO_CUST_AZCHO_NM", setParam[21]);
		setMap.setValue("HURYO_CUST_AD_NM", setParam[22]);
		setMap.setValue("HURYO_CUST_BNCHIGO", setParam[23]);
		setMap.setValue("HURYO_CUST_ADRTTM", setParam[24]);
		setMap.setValue("HURYO_CUST_ADRRM", setParam[25]);
		setMap.setValue("HRYCST_AD_MAN_INPUT_FLG", setParam[26]);
		setMap.setValue("SHOKUGYO_CD", setParam[27]);
		setMap.setValue("GSHU_CD", setParam[28]);
		setMap.setValue("SKSHA_ZOKUGARA_CD", setParam[29]);
		setMap.setValue("NONPAY_AMNT", setParam[30]);
		setMap.setValue("HURYO_CUST_JIGYOSHA_CD", setParam[31]);
		setMap.setValue("HURYO_CUST_HSK_BIKO", setParam[32]);

		// DBアクセスを実行します
		db_CK_T_HURYO_CUST_INSERT.insertByPrimaryKeysBatch(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 不良顧客テーブル登録（請求）を行います。
	 * 
	 * @param mastMap 不良顧客情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void insertHuryoCustSeiky(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][insertHuryoCustSeiky]");

		// 登録項目の設定
		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();

		// 不良顧客番号取得
		setParam.setValue(SEQ_HURYO_CUST_NO_NEXTVAL);
		// 不良顧客登録コード
		setParam.setValue(JACStrConst.HURYO_CUST_ADD_CD_SEIKY);
		// 加入者交換出力開始年月
		setParam.setValue(null);
		// SYSID
		setParam.setValue(null);
		// 請求契約番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SEIKY_KEI_NO));
		// サービス契約番号
		setParam.setValue(null);
		// 顧客番号
		setParam.setValue(null);
		// 督促番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.TOKUSOKU_NO));
		// 多重申込グループコード
		setParam.setValue(null);
		// 契約者タイプコード
		setParam.setValue(null);
		// 不良顧客名
		setParam.setValue(null);
		// 不良顧客カナ名
		setParam.setValue(makeSpaceChg(inMap.getString(JBSbatCHIFM173.SHS_KANA)));
		// 不良顧客性別コード
		setParam.setValue(null);
		// 不良顧客生年月日
		setParam.setValue(null);
		// 不良顧客電話番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SOHUS_TELNO));
		// 不良顧客移動電話番号
		setParam.setValue(null);
		// 不良顧客住所コード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SOHUS_AD_CD));
		// 不良顧客郵便番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SOHUS_PCD));

		String stateNm = inMap.getString(JBSbatCHIFM173.SOHUS_STATE_NM);
		String cityNm = inMap.getString(JBSbatCHIFM173.SOHUS_CITY_NM);
		String oaztsuNm = inMap.getString(JBSbatCHIFM173.SOHUS_OAZTSU_NM);
		String azchoNm = inMap.getString(JBSbatCHIFM173.SOHUS_AZCHO_NM);
		String bnchigoNm = inMap.getString(JBSbatCHIFM173.SOHUS_BNCHIGO);
		String adrttmNm = inMap.getString(JBSbatCHIFM173.SOHUS_ADRTTM);
		String adrrmNm = inMap.getString(JBSbatCHIFM173.SOHUS_ADRRM);

		// 不良顧客都道府県名
		setParam.setValue(stateNm);
		// 不良顧客市区町村名
		setParam.setValue(cityNm);
		// 不良顧客大字通称名
		setParam.setValue(oaztsuNm);
		// 不良顧客字丁目名
		setParam.setValue(azchoNm);
		// 不良顧客住所名
		// 文字列長242バイト以上は切り捨てる
		setParam.setValue(
			JTUBatStringUtil.cutStrValue(
				makeStr(this.chgeNullToKara(stateNm),
						this.chgeNullToKara(cityNm),
						this.chgeNullToKara(oaztsuNm),
						this.chgeNullToKara(azchoNm),
						this.chgeNullToKara(bnchigoNm),
						this.chgeNullToKara(adrttmNm),
						this.chgeNullToKara(adrrmNm))
				, HURYO_CUST_AD_NM_LENGTH, JACStrConst.KARA_MOJI));

		// 不良顧客番地号
		setParam.setValue(bnchigoNm);
		// 不良顧客住所補記・建物名
		setParam.setValue(adrttmNm);
		// 不良顧客住所補記・部屋番号
		setParam.setValue(adrrmNm);
		// 不良顧客住所手動入力フラグ
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SOHUS_AD_MAN_INPUT_FLG));
		// 職業コード
		setParam.setValue(null);
		// 業種コード
		setParam.setValue(null);
		// 親権者続柄コード
		setParam.setValue(null);
		// 滞納額
		setParam.setValue(STRING_ZERO);
		// 不良顧客事業者コード
		setParam.setValue(JACStrConst.HURYO_CUST_JIGYOSHA_CD_KOPT);
		// 不良顧客補足備考
		setParam.setValue(null);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][insertHuryoCustSeiky][setParam=" + setParam.getList().toString() + "]");

		// SQL文を実行
		executeCK_T_HURYO_CUST_PKINSERT(setParam.getList().toArray());

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][insertHuryoCustSeiky]");
	}

	/**
	 * 不良顧客テーブル登録（契約者）を行います。
	 * 
	 * @param inMap 不良顧客情報
	 * @param ryokin 滞納額
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void insertHuryoCustKeisha(JBSbatServiceInterfaceMap inMap, String ryokin) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][insertHuryoCustKeisha]");

		// 登録項目の設定
		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();

		// 不良顧客番号
		setParam.setValue(SEQ_HURYO_CUST_NO_NEXTVAL);
		// 不良顧客登録コード
		setParam.setValue(JACStrConst.HURYO_CUST_ADD_CD_KEISHA);
		// 加入者交換出力開始年月
		setParam.setValue(null);
		// SYSID
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SYSID));
		// 請求契約番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SEIKY_KEI_NO));
		// サービス契約番号
		setParam.setValue(null);
		// 顧客番号
		setParam.setValue(null);
		// 督促番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.TOKUSOKU_NO));
		// 多重申込グループコード
		setParam.setValue(null);
		// 契約者タイプコード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.KEISHA_TYPE_CD));
		// 不良顧客名
		setParam.setValue(makeSpaceChg(inMap.getString(JBSbatCHIFM173.CUST_NM)));
		// 不良顧客カナ名
		setParam.setValue(makeSpaceChg(inMap.getString(JBSbatCHIFM173.CUST_KANA)));
		// 不良顧客性別コード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.CUST_SEX_CD));
		// 不良顧客生年月日
		setParam.setValue(inMap.getString(JBSbatCHIFM173.CUST_BIRTHD));
		// 不良顧客電話番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.KEISHA_TELNO));
		// 不良顧客移動電話番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.PSN));
		// 不良顧客住所コード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.KEISHA_AD_CD));
		// 不良顧客郵便番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.KEISHA_PCD));

		String stateNm = inMap.getString(JBSbatCHIFM173.KEISHA_STATE_NM);
		String cityNm = inMap.getString(JBSbatCHIFM173.KEISHA_CITY_NM);
		String oaztsuNm = inMap.getString(JBSbatCHIFM173.KEISHA_OAZTSU_NM);
		String azchoNm = inMap.getString(JBSbatCHIFM173.KEISHA_AZCHO_NM);
		String bnchigoNm = inMap.getString(JBSbatCHIFM173.KEISHA_BNCHIGO);
		String adrttmNm = inMap.getString(JBSbatCHIFM173.KEISHA_ADRTTM);
		String adrrmNm = inMap.getString(JBSbatCHIFM173.KEISHA_ADRRM);

		// 不良顧客都道府県名
		setParam.setValue(stateNm);
		// 不良顧客市区町村名
		setParam.setValue(cityNm);
		// 不良顧客大字通称名
		setParam.setValue(oaztsuNm);
		// 不良顧客字丁目名
		setParam.setValue(azchoNm);
		// 不良顧客住所名
		setParam.setValue(
			makeStr(this.chgeNullToKara(stateNm),
					this.chgeNullToKara(cityNm),
					this.chgeNullToKara(oaztsuNm),
					this.chgeNullToKara(azchoNm),
					this.chgeNullToKara(bnchigoNm),
					this.chgeNullToKara(adrttmNm),
					this.chgeNullToKara(adrrmNm)));

		// 不良顧客番地号
		setParam.setValue(bnchigoNm);
		// 不良顧客住所補記・建物名
		setParam.setValue(adrttmNm);
		// 不良顧客住所補記・部屋番号
		setParam.setValue(adrrmNm);
		// 不良顧客住所手動入力フラグ
		setParam.setValue(inMap.getString(JBSbatCHIFM173.KEISHA_AD_MAN_INPUT_FLG));
		// 職業コード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SHOKUGYO_CD));
		// 業種コード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.OFFC_GSHU_CD));
		// 親権者続柄コード
		setParam.setValue(null);
		// 滞納額
		// OM-2018-0000551 MOD START
//		if (ryokin == null)
		if (JCRUtilCommon.isNull(ryokin))
		// OM-2018-0000551 MOD END
		{
			// OM-2018-0000551 MOD START
//			setParam.setValue(STRING_ZERO);
			ryokin = STRING_ZERO;
			// OM-2018-0000551 MOD END
		}
		setParam.setValue(ryokin);

		// 不良顧客事業者コード
		setParam.setValue(JACStrConst.HURYO_CUST_JIGYOSHA_CD_KOPT);
		// 不良顧客補足備考
		setParam.setValue(null);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][insertHuryoCustKeisha][setParam=" + setParam.getList().toString() + "]");

		// SQL文を実行
		executeCK_T_HURYO_CUST_PKINSERT(setParam.getList().toArray());

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][insertHuryoCustKeisha]");
	}

	/**
	 * 不良顧客テーブル登録（親権者）を行います。
	 * 
	 * @param inMap 不良顧客情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void insertHuryoCustShinkensha(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][insertHuryoCustShinkensha]");

		// 登録項目の設定
		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();

		// 不良顧客番号
		setParam.setValue(SEQ_HURYO_CUST_NO_NEXTVAL);
		// 不良顧客登録コード
		setParam.setValue(JACStrConst.HURYO_CUST_ADD_CD_SKSHA);
		// 加入者交換出力開始年月
		setParam.setValue(null);
		// SYSID
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SYSID));
		// 請求契約番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SEIKY_KEI_NO));
		// サービス契約番号
		setParam.setValue(null);
		// 顧客番号
		setParam.setValue(null);
		// 督促番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.TOKUSOKU_NO));
		// 多重申込グループコード
		setParam.setValue(null);
		// 契約者タイプコード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.KEISHA_TYPE_CD));
		// 不良顧客名
		setParam.setValue(makeSpaceChg(inMap.getString(JBSbatCHIFM173.SKSHA_NM)));
		// 不良顧客カナ名
		setParam.setValue(makeSpaceChg(inMap.getString(JBSbatCHIFM173.SKSHA_KANA)));
		// 不良顧客性別コード
		setParam.setValue(null);
		// 不良顧客生年月日
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SKSHA_BIRTHD));
		// 不良顧客電話番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SKSHA_TELNO));
		// 不良顧客移動電話番号
		setParam.setValue(null);
		// 不良顧客住所コード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SKSHA_AD_CD));
		// 不良顧客郵便番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SKSHA_PCD));

		String stateNm = inMap.getString(JBSbatCHIFM173.SKSHA_STATE_NM);
		String cityNm = inMap.getString(JBSbatCHIFM173.SKSHA_CITY_NM);
		String oaztsuNm = inMap.getString(JBSbatCHIFM173.SKSHA_OAZTSU_NM);
		String azchoNm = inMap.getString(JBSbatCHIFM173.SKSHA_AZCHO_NM);
		String bnchigoNm = inMap.getString(JBSbatCHIFM173.SKSHA_AD_BNCHIGO);
		String adrttmNm = inMap.getString(JBSbatCHIFM173.SKSHA_ADRTTM);
		String adrrmNm = inMap.getString(JBSbatCHIFM173.SKSHA_ADRRM);

		// 不良顧客都道府県名
		setParam.setValue(stateNm);
		// 不良顧客市区町村名
		setParam.setValue(cityNm);
		// 不良顧客大字通称名
		setParam.setValue(oaztsuNm);
		// 不良顧客字丁目名
		setParam.setValue(azchoNm);
		// 不良顧客住所名
		setParam.setValue(
			makeStr(this.chgeNullToKara(stateNm),
					this.chgeNullToKara(cityNm),
					this.chgeNullToKara(oaztsuNm),
					this.chgeNullToKara(azchoNm),
					this.chgeNullToKara(bnchigoNm),
					this.chgeNullToKara(adrttmNm),
					this.chgeNullToKara(adrrmNm)));

		// 不良顧客番地号
		setParam.setValue(bnchigoNm);
		// 不良顧客住所補記・建物名
		setParam.setValue(adrttmNm);
		// 不良顧客住所補記・部屋番号
		setParam.setValue(adrrmNm);
		// 不良顧客住所手動入力フラグ
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SKSHA_AD_MAN_INPUT_FLG));
		// 職業コード
		setParam.setValue(null);
		// 業種コード
		setParam.setValue(null);
		// 親権者続柄コード
		setParam.setValue(null);
		// 滞納額
		setParam.setValue(STRING_ZERO);
		// 不良顧客事業者コード
		setParam.setValue(JACStrConst.HURYO_CUST_JIGYOSHA_CD_KOPT);
		// 不良顧客補足備考
		setParam.setValue(null);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][insertHuryoCustShinkensha][setParam=" + setParam.getList().toString() + "]");

		// SQL文を実行
		executeCK_T_HURYO_CUST_PKINSERT(setParam.getList().toArray());

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][insertHuryoCustShinkensha]");
	}

	/**
	 * 請求年月を取得します。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getSikyYm() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getSikyYm]");
		
		JCHbatSeikyKaknoBusinessUtil su = new JCHbatSeikyKaknoBusinessUtil(commonItem);
		try
		{
			// 請求年月取得
			this.tihSikyYm = su.getBillYmContain(super.opeDate, JACStrConst.EVENT_CD_SIKY_TRN_DAY);
		}
		finally
		{
			su.close();
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getSikyYm][tihSikyYm=" + this.tihSikyYm + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getSikyYm]");
		return;
	}
	
	/**
	 * 文字列に含まれる空白（半角、全角）を除去して返却します。
	 * @param str　文字
	 * @return String　編集後の文字列
	 */
	private String makeSpaceChg(String str)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeSpaceChg]");
		
		if(str == null || JACStrConst.KARA_MOJI.equals(str))
		{
			str = JACStrConst.KARA_MOJI;
		}
		else
		{
			str = str.replace(JACStrConst.SPACE_1, JACStrConst.KARA_MOJI).replace(JACStrConst.FULL_SPACE_1, JACStrConst.KARA_MOJI);
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeSpaceChg][str=" + str + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSpaceChg]");
		
		return str;
	}

	/**
	 * 不良顧客テーブル更新（請求）を行います。
	 * 
	 * @param mastMap 不良顧客情報
	 * @param huryoCustNo 不良顧客番号
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void updateHuryoCustSeiky(JBSbatServiceInterfaceMap inMap, String huryoCustNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][updateHuryoCustSeiky]");
		
		// 更新項目の設定
		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();

		// 督促番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.TOKUSOKU_NO));
		// 契約者タイプコード
		setParam.setValue(null);
		// 不良顧客名
		setParam.setValue(null);
		// 不良顧客カナ名
		setParam.setValue(makeSpaceChg(inMap.getString(JBSbatCHIFM173.SHS_KANA)));
		// 不良顧客性別コード
		setParam.setValue(null);
		// 不良顧客生年月日
		setParam.setValue(null);
		// 不良顧客電話番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SOHUS_TELNO));
		// 不良顧客移動電話番号
		setParam.setValue(null);
		// 不良顧客住所コード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SOHUS_AD_CD));
		// 不良顧客郵便番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SOHUS_PCD));

		String stateNm = inMap.getString(JBSbatCHIFM173.SOHUS_STATE_NM);
		String cityNm = inMap.getString(JBSbatCHIFM173.SOHUS_CITY_NM);
		String oaztsuNm = inMap.getString(JBSbatCHIFM173.SOHUS_OAZTSU_NM);
		String azchoNm = inMap.getString(JBSbatCHIFM173.SOHUS_AZCHO_NM);
		String bnchigoNm = inMap.getString(JBSbatCHIFM173.SOHUS_BNCHIGO);
		String adrttmNm = inMap.getString(JBSbatCHIFM173.SOHUS_ADRTTM);
		String adrrmNm = inMap.getString(JBSbatCHIFM173.SOHUS_ADRRM);

		// 不良顧客都道府県名
		setParam.setValue(stateNm);
		// 不良顧客市区町村名
		setParam.setValue(cityNm);
		// 不良顧客大字通称名
		setParam.setValue(oaztsuNm);
		// 不良顧客字丁目名
		setParam.setValue(azchoNm);
		// 不良顧客住所名
		// 文字列長242バイト以上は切り捨てる
		setParam.setValue(
			JTUBatStringUtil.cutStrValue(
				makeStr(this.chgeNullToKara(stateNm),
						this.chgeNullToKara(cityNm),
						this.chgeNullToKara(oaztsuNm),
						this.chgeNullToKara(azchoNm),
						this.chgeNullToKara(bnchigoNm),
						this.chgeNullToKara(adrttmNm),
						this.chgeNullToKara(adrrmNm))
				, HURYO_CUST_AD_NM_LENGTH, JACStrConst.KARA_MOJI));

		// 不良顧客番地号
		setParam.setValue(bnchigoNm);
		// 不良顧客住所補記・建物名
		setParam.setValue(adrttmNm);
		// 不良顧客住所補記・部屋番号
		setParam.setValue(adrrmNm);
		// 不良顧客住所手動入力フラグ
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SOHUS_AD_MAN_INPUT_FLG));
		// 職業コード
		setParam.setValue(null);
		// 業種コード
		setParam.setValue(null);
		// 親権者続柄コード
		setParam.setValue(null);
		// 不良顧客.更新年月日時分秒
		setParam.setValue(null);
		// 不良顧客.更新オペレータアカウント
		setParam.setValue(null);

		// where条件(PK)の設定
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();

		// 不良顧客.不良顧客番号
		whereParam.setValue(huryoCustNo);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updateHuryoCustSeiky][setParam = " + setParam.getList().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updateHuryoCustSeiky][whereParam = " + whereParam.getList().toString() + "]");

		// 更新実行
		executeCK_T_HURYO_CUST_UPDATE(setParam.getList().toArray(), whereParam.getList().toArray(), JACStrConst.KARA_MOJI);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][updateHuryoCustSeiky]");
	}

	/**
	 * 不良顧客テーブル更新（契約者）を行います。
	 * 
	 * @param mastMap 不良顧客情報
	 * @param huryoCustNo 不良顧客番号
	 * @param ryokin 滞納額
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void updateHuryoCustKeisha(JBSbatServiceInterfaceMap inMap, String huryoCustNo, String ryokin) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][updateHuryoCustKeisha]");
		
		// 更新項目の設定
		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();

		// 督促番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.TOKUSOKU_NO));
		// 契約者タイプコード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.KEISHA_TYPE_CD));
		// 不良顧客名
		setParam.setValue(makeSpaceChg(inMap.getString(JBSbatCHIFM173.CUST_NM)));
		// 不良顧客カナ名
		setParam.setValue(makeSpaceChg(inMap.getString(JBSbatCHIFM173.CUST_KANA)));
		// 不良顧客性別コード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.CUST_SEX_CD));
		// 不良顧客生年月日
		setParam.setValue(inMap.getString(JBSbatCHIFM173.CUST_BIRTHD));
		// 不良顧客電話番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.KEISHA_TELNO));
		// 不良顧客移動電話番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.PSN));
		// 不良顧客住所コード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.KEISHA_AD_CD));
		// 不良顧客郵便番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.KEISHA_PCD));

		String stateNm = inMap.getString(JBSbatCHIFM173.KEISHA_STATE_NM);
		String cityNm = inMap.getString(JBSbatCHIFM173.KEISHA_CITY_NM);
		String oaztsuNm = inMap.getString(JBSbatCHIFM173.KEISHA_OAZTSU_NM);
		String azchoNm = inMap.getString(JBSbatCHIFM173.KEISHA_AZCHO_NM);
		String bnchigoNm = inMap.getString(JBSbatCHIFM173.KEISHA_BNCHIGO);
		String adrttmNm = inMap.getString(JBSbatCHIFM173.KEISHA_ADRTTM);
		String adrrmNm = inMap.getString(JBSbatCHIFM173.KEISHA_ADRRM);

		// 不良顧客都道府県名
		setParam.setValue(stateNm);
		// 不良顧客市区町村名
		setParam.setValue(cityNm);
		// 不良顧客大字通称名
		setParam.setValue(oaztsuNm);
		// 不良顧客字丁目名
		setParam.setValue(azchoNm);
		// 不良顧客住所名
		setParam.setValue(
			makeStr(this.chgeNullToKara(stateNm),
					this.chgeNullToKara(cityNm),
					this.chgeNullToKara(oaztsuNm),
					this.chgeNullToKara(azchoNm),
					this.chgeNullToKara(bnchigoNm),
					this.chgeNullToKara(adrttmNm),
					this.chgeNullToKara(adrrmNm)));

		// 不良顧客番地号
		setParam.setValue(bnchigoNm);
		// 不良顧客住所補記・建物名
		setParam.setValue(adrttmNm);
		// 不良顧客住所補記・部屋番号
		setParam.setValue(adrrmNm);
		// 不良顧客住所手動入力フラグ
		setParam.setValue(inMap.getString(JBSbatCHIFM173.KEISHA_AD_MAN_INPUT_FLG));
		// 職業コード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SHOKUGYO_CD));
		// 業種コード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.OFFC_GSHU_CD));
		// 親権者続柄コード
		setParam.setValue(null);
		// 不良顧客.更新年月日時分秒
		setParam.setValue(null);
		// 不良顧客.更新オペレータアカウント
		setParam.setValue(null);

		// where条件(PK)の設定
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();

		// 不良顧客.不良顧客番号
		whereParam.setValue(huryoCustNo);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updateHuryoCustKeisha][setParam = " + setParam.getList().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updateHuryoCustKeisha][whereParam = " + whereParam.getList().toString() + "]");

		// 更新実行
		executeCK_T_HURYO_CUST_UPDATE(setParam.getList().toArray(), whereParam.getList().toArray(), ryokin);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][updateHuryoCustKeisha]");
	}

	/**
	 * 不良顧客テーブル更新（親権者）を行います。
	 * 
	 * @param mastMap 不良顧客情報
	 * @param huryoCustNo 不良顧客番号
	 * @param ryokin 滞納額
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void updateHuryoCustShinkensha(JBSbatServiceInterfaceMap inMap, String huryoCustNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][updateHuryoCustShinkensha]");
		
		// 更新項目の設定
		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();

		// 督促番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.TOKUSOKU_NO));
		// 契約者タイプコード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.KEISHA_TYPE_CD));
		// 不良顧客名
		setParam.setValue(makeSpaceChg(inMap.getString(JBSbatCHIFM173.SKSHA_NM)));
		// 不良顧客カナ名
		setParam.setValue(makeSpaceChg(inMap.getString(JBSbatCHIFM173.SKSHA_KANA)));
		// 不良顧客性別コード
		setParam.setValue(null);
		// 不良顧客生年月日
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SKSHA_BIRTHD));
		// 不良顧客電話番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SKSHA_TELNO));
		// 不良顧客移動電話番号
		setParam.setValue(null);
		// 不良顧客住所コード
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SKSHA_AD_CD));
		// 不良顧客郵便番号
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SKSHA_PCD));

		String stateNm = inMap.getString(JBSbatCHIFM173.SKSHA_STATE_NM);
		String cityNm = inMap.getString(JBSbatCHIFM173.SKSHA_CITY_NM);
		String oaztsuNm = inMap.getString(JBSbatCHIFM173.SKSHA_OAZTSU_NM);
		String azchoNm = inMap.getString(JBSbatCHIFM173.SKSHA_AZCHO_NM);
		String bnchigoNm = inMap.getString(JBSbatCHIFM173.SKSHA_AD_BNCHIGO);
		String adrttmNm = inMap.getString(JBSbatCHIFM173.SKSHA_ADRTTM);
		String adrrmNm = inMap.getString(JBSbatCHIFM173.SKSHA_ADRRM);

		// 不良顧客都道府県名
		setParam.setValue(stateNm);
		// 不良顧客市区町村名
		setParam.setValue(cityNm);
		// 不良顧客大字通称名
		setParam.setValue(oaztsuNm);
		// 不良顧客字丁目名
		setParam.setValue(azchoNm);
		// 不良顧客住所名
		setParam.setValue(
			makeStr(this.chgeNullToKara(stateNm),
					this.chgeNullToKara(cityNm),
					this.chgeNullToKara(oaztsuNm),
					this.chgeNullToKara(azchoNm),
					this.chgeNullToKara(bnchigoNm),
					this.chgeNullToKara(adrttmNm),
					this.chgeNullToKara(adrrmNm)));

		// 不良顧客番地号
		setParam.setValue(bnchigoNm);
		// 不良顧客住所補記・建物名
		setParam.setValue(adrttmNm);
		// 不良顧客住所補記・部屋番号
		setParam.setValue(adrrmNm);
		// 不良顧客住所手動入力フラグ
		setParam.setValue(inMap.getString(JBSbatCHIFM173.SKSHA_AD_MAN_INPUT_FLG));
		// 職業コード
		setParam.setValue(null);
		// 業種コード
		setParam.setValue(null);
		// 親権者続柄コード
		setParam.setValue(null);
		// 不良顧客.更新年月日時分秒
		setParam.setValue(null);
		// 不良顧客.更新オペレータアカウント
		setParam.setValue(null);

		// where条件(PK)の設定
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();

		// 不良顧客.不良顧客番号
		whereParam.setValue(huryoCustNo);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updateHuryoCustShinkensha][setParam = " + setParam.getList().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updateHuryoCustShinkensha][whereParam = " + whereParam.getList().toString() + "]");

		// 更新実行
		executeCK_T_HURYO_CUST_UPDATE(setParam.getList().toArray(), whereParam.getList().toArray(), JACStrConst.KARA_MOJI);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][updateHuryoCustShinkensha]");
	}

	/**
	 * 不良顧客テーブル削除を行います。
	 * 
	 * @param huryoCustNo 不良顧客番号
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void deleteHuryoCust(String huryoCustNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][deleteHuryoCust]");

		// 削除条件の設定
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		// 不良顧客番号
		whereParam.setValue(huryoCustNo);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][deleteHuryoCust][whereParam=" + whereParam.getList().toString() + "]");
		
		// SQL文を実行
		int deleteCount = executeCK_T_HURYO_CUST_DELETE(whereParam.getList().toArray());

		// 削除件数判定
		if (deleteCount > 0 && deleteCount < commonItem.getCommitArrayCount())
		{
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECHB0270CH, new String[]
			{ JBSbatCK_T_HURYO_CUST.TABLE_NAME, whereParam.getList().toString() });
		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][deleteHuryoCust]");
	}

	/**
	 * 不良顧客テーブル更新
	 * @param setParam 設定項目の値
	 * @param whereParam 設定項目の値
	 * @param ryokin 滞納額
	 * @return 更新件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCK_T_HURYO_CUST_UPDATE(Object[] setParam, Object[] whereParam, String ryokin) throws Exception
	{

		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TOKUSOKU_NO",				setParam[0]);
		setMap.setValue("KEISHA_TYPE_CD",			setParam[1]);
		setMap.setValue("HURYO_CUST_NM",			setParam[2]);
		setMap.setValue("HURYO_CUST_KANA",			setParam[3]);
		setMap.setValue("HURYO_CUST_SEX_CD",		setParam[4]);
		setMap.setValue("HURYO_CUST_BIRTHD",		setParam[5]);
		setMap.setValue("HURYO_CUST_TELNO",			setParam[6]);
		setMap.setValue("HURYO_CUST_MOVE_TELNO",	setParam[7]);
		setMap.setValue("HURYO_CUST_AD_CD",			setParam[8]);
		setMap.setValue("HURYO_CUST_PCD",			setParam[9]);
		setMap.setValue("HURYO_CUST_STATE_NM",		setParam[10]);
		setMap.setValue("HURYO_CUST_CITY_NM",		setParam[11]);
		setMap.setValue("HURYO_CUST_OAZTSU_NM",		setParam[12]);
		setMap.setValue("HURYO_CUST_AZCHO_NM",		setParam[13]);
		setMap.setValue("HURYO_CUST_AD_NM",			setParam[14]);
		setMap.setValue("HURYO_CUST_BNCHIGO",		setParam[15]);
		setMap.setValue("HURYO_CUST_ADRTTM",		setParam[16]);
		setMap.setValue("HURYO_CUST_ADRRM",			setParam[17]);
		setMap.setValue("HRYCST_AD_MAN_INPUT_FLG",	setParam[18]);
		setMap.setValue("SHOKUGYO_CD",				setParam[19]);
		setMap.setValue("GSHU_CD",					setParam[20]);
		setMap.setValue("SKSHA_ZOKUGARA_CD",		setParam[21]);
		if(!JACStrConst.KARA_MOJI.equals(ryokin))
		{
			setMap.setValue("NONPAY_AMNT",				ryokin);
		}
		setMap.setValue("UPD_DTM",					opeDate);
		setMap.setValue("UPD_OPEACNT",				JACStrConst.OPEACNT_SYSTEM);

		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("HURYO_CUST_NO",			whereParam[0]);

		// DBアクセスを実行します
		return db_CK_T_HURYO_CUST_UPDATE.updateByPrimaryKeysBatch(whereMap, setMap, 1);
	}

	/**
	 * PK(ＰＫ　削除)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	HURYO_CUST_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return 削除件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCK_T_HURYO_CUST_DELETE(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("HURYO_CUST_NO", whereParam[0]);

		// DBアクセスを実行します
		return db_CK_T_HURYO_CUST_DELETE.deleteByPrimaryKeysBatch(whereMap);
	}

}
