/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCKHuryoCustChkTrgtChsht
*	ソースファイル名	：JBSbatCKHuryoCustChkTrgtChsht.java
*	作成者				：富士通　
*	作成日				：2011年07月20日
*＜機能概要＞
*　不良顧客チェック対象抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/20  FJ)久保田	新規作成
*	v1.01.00	2011/11/08  FJ)久保田	IT2-2011-000188障害対応
*	v1.02.00	2011/11/12  FJ)古内　	IT2-2011-000216障害対応
*	v1.03.00	2011/11/14  FJ)久保田	IT1-2011-000215障害対応
*	v2.00.00	2012/04/11  FJ)久保田	【TAI-2012-0000027】排他制御対応
*	v2.01.00	2012/04/30  FJ)倉上		【IT2-2012-0000496】障害対応
*	v3.00.00	2012/05/02  FJ)藤本		【巻@登録テーブル項目同期】対応
*	v4.00.00	2012/10/19	FJ)団		PGRelief対応
*	v4.01.00	2013/03/25  FJ)柳		【IT1-2012-0000498】障害対応
*	v7.00.00	2014/02/20  FJ)団		【OM-2014-0000563】障害対応
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatCKIFI001;
import eo.business.util.file.JBSbatCKIFM001;
import eo.business.util.table.JBSbatKK_T_JUDGE;
import eo.business.util.table.JBSbatKK_T_SVKEI_EXC_CTRL;
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;
import eo.framework.util.JBSbatOracleSeqUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCKHuryoCustChkTrgtChsht extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(審査)*/
	private static final String D_TBL_NAME_KK_T_JUDGE = "KK_T_JUDGE";

	/** テーブル(サービス契約排他制御)*/
	private static final String D_TBL_NAME_KK_T_SVKEI_EXC_CTRL = "KK_T_SVKEI_EXC_CTRL";
	
	/** SQL定義キー(CK_SELECT_002)*/
	private static final String KK_T_JUDGE_CK_SELECT_002 = "CK_SELECT_002";

	/** テーブルアクセスクラス(審査)*/
	private JBSbatSQLAccess db_KK_T_JUDGE = null;
	
	/** テーブルアクセスクラス(サービス契約排他制御)*/
	private JBSbatSQLAccess db_KK_T_SVKEI_EXC_CTRL = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/**
	 *  申込番号
	 */
	protected String mskmNo = "";

	/**
	 *  申込種別コード 
	 */
	protected String mskmSbtCd = "";

	/**
	 *  お客様名
	 */
	protected String custNm = "";

	/**
	 *  お客様カナ名
	 */
	protected String custKana = "";

	/**
	 *  契約者タイプコード
	 */
	protected String keishaTypeCd = "";

	/**
	 *  異動区分
	 */
	protected String idoDiv = "";
	
	/**
	 *  審査番号
	 */
	protected String judgeNo = "";
	
	/**
	 *  ＳＹＳＩＤ
	 */
	protected String sysid = "";
	
	/**
	 *  サービス契約番号
	 */
	protected String svcKeiNo = "";
	
	/**
	 *  申込明細番号
	 */
	protected String mskmDtlNo = "";
	
	/**
	 *  更新年月日時分秒(初期検索)
	 */
	protected String lastUpdDtmBf = "";
	
	/** シーケンス定義名(SEQ_JUDGE_NO)*/
	private static final String SEQ_JUDGE_NO = "SEQ_JUDGE_NO";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_JUDGE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_JUDGE);
		db_KK_T_SVKEI_EXC_CTRL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEI_EXC_CTRL);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		super.logPrint.printDebugLog("execute_START");
		
		// 中間ファイルの読み込みを行います。
		getCkifi001(inMap);

/* ++++++++++ v7.00.00 削除開始 ++++++++++ */
//		// 入力チェックエラー出力の置換文字列格納用HashMap生成
//		HashMap<String, Object> itemvalueMap = new HashMap<String, Object>();
//		// エラー対象レコード識別文字列
//		StringBuilder errTgRecSkbtStr  = new StringBuilder();	
//		// エラー対象レコード識別文字列設定
//		errTgRecSkbtStr.append("申込番号：" +  mskmNo);
//		errTgRecSkbtStr.append("、ＳＹＳＩＤ：" +  sysid);
//		errTgRecSkbtStr.append("、申込種別コード：" +  mskmSbtCd);
//		errTgRecSkbtStr.append("、申込明細番号：" +  mskmDtlNo);
//		errTgRecSkbtStr.append("、お客様名：" +  custNm);
//		errTgRecSkbtStr.append("、お客様カナ名：" +  custKana);
//		errTgRecSkbtStr.append("、契約者タイプコード：" +  keishaTypeCd);
//		errTgRecSkbtStr.append("、サービス契約番号：" +  svcKeiNo);
//		errTgRecSkbtStr.append("、異動区分：" +  idoDiv);
//		
//		//置換文字列設定
//		itemvalueMap.put("TXT-CKIFI001-INF1.MSKM_NO", "未審査申込情報.申込番号 【エラー対象レコード】：" + errTgRecSkbtStr.toString());
//		itemvalueMap.put("TXT-CKIFI001-INF1.SYSID", "未審査申込情報.ＳＹＳＩＤ 【エラー対象レコード】：" + errTgRecSkbtStr.toString());
//		itemvalueMap.put("TXT-CKIFI001-INF1.MSKM_SBT_CD", "未審査申込情報.申込種別コード 【エラー対象レコード】：" + errTgRecSkbtStr.toString());
//		itemvalueMap.put("TXT-CKIFI001-INF1.MSKM_DTL_NO", "未審査申込情報.申込明細番号 【エラー対象レコード】：" + errTgRecSkbtStr.toString());
//		itemvalueMap.put("TXT-CKIFI001-INF1.CUST_NM", "未審査申込情報.お客様名 【エラー対象レコード】：" + errTgRecSkbtStr.toString());
//		itemvalueMap.put("TXT-CKIFI001-INF1.CUST_KANA", "未審査申込情報.お客様カナ名 【エラー対象レコード】：" + errTgRecSkbtStr.toString());
//		itemvalueMap.put("TXT-CKIFI001-INF1.KEISHA_TYPE_CD", "未審査申込情報.契約者タイプコード 【エラー対象レコード】：" + errTgRecSkbtStr.toString());
//		itemvalueMap.put("TXT-CKIFI001-INF1.SVC_KEI_NO", "未審査申込情報.サービス契約番号 【エラー対象レコード】：" + errTgRecSkbtStr.toString());
//		itemvalueMap.put("TXT-CKIFI001-INF1.IDO_DIV", "未審査申込情報.異動区分 【エラー対象レコード】：" + errTgRecSkbtStr.toString());
//
//		// 入力情報（未審査申込情報）の単項目チェック
//		if (!isSingleCheckCKIFI001_INF1(inMap.getMap(), itemvalueMap))
//		{
//			throw new JBSbatBusinessError();
//		}
/* ++++++++++ v7.00.00 削除終了 ++++++++++ */
		
		// 検索条件としてSYSID、申込明細番号、サービス契約番号を設定。
		// SQL定義キー(CK_SELECT_002)を実行する
		String [] selectParam = {sysid, mskmDtlNo, svcKeiNo};
		super.logPrint.printDebugLog("selectParam(ＳＹＳＩＤ)：：：：" +  selectParam[0]);
		super.logPrint.printDebugLog("selectParam(申込明細番号)：：：" +  selectParam[1]);
		super.logPrint.printDebugLog("selectParam(サービス契約番号)：" +  selectParam[2]);
		
		// 審査検索処理(CK_SELECT_002)の実行。
		executeKK_T_JUDGE_CK_SELECT_002(selectParam);
		
		JBSbatCommonDBInterface judgeMap = db_KK_T_JUDGE.selectNext();
		
		if(null == judgeMap)
		{
			// 審査情報の登録
			insertJudge();
		}
		else
		{
			// フィールド変数の初期化
			judgeNo   = "";
			sysid     = "";
			mskmDtlNo = "";
			svcKeiNo  = "";
			
			// 検索結果の審査情報をフィールド変数に設定する。
			judgeNo   = JBSbatStringUtil.Rtrim(judgeMap.getString(JBSbatKK_T_JUDGE.JUDGE_NO));
			sysid     = JBSbatStringUtil.Rtrim(judgeMap.getString(JBSbatKK_T_JUDGE.SYSID));
			mskmDtlNo = JBSbatStringUtil.Rtrim(judgeMap.getString(JBSbatKK_T_JUDGE.MSKM_DTL_NO));
			svcKeiNo  = JBSbatStringUtil.Rtrim(judgeMap.getString(JBSbatKK_T_JUDGE.SVC_KEI_NO));
			
		}
		
		// サービス契約排他制御より最終更新日時を取得します。
		lastUpdDtmBf = searchSvkeiExcCtrl(svcKeiNo);
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		// 不良顧客チェックファイルのファイル出力
		outputBean = createCkifm001();
		
		super.logPrint.printDebugLog("execute_END");
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_JUDGE.close();
		db_KK_T_SVKEI_EXC_CTRL.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

/* ++++++++++ v7.00.00 削除開始 ++++++++++ */
//	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
//	/**
//	 *入力情報（未審査申込情報）の単項目チェックを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.単項目チェックを行います。<br>
//	 * 
//	 * 2.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
//	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
//	 *			 TXT-CKIFI001-INF1.MSKM_NO			未審査申込情報.申込番号
//	 *			 TXT-CKIFI001-INF1.MSKM_NO			未審査申込情報.申込番号
//	 *			 TXT-CKIFI001-INF1.SYSID			未審査申込情報.ＳＹＳＩＤ
//	 *			 TXT-CKIFI001-INF1.SYSID			未審査申込情報.ＳＹＳＩＤ
//	 *			 TXT-CKIFI001-INF1.MSKM_SBT_CD			未審査申込情報.申込種別コード
//	 *			 TXT-CKIFI001-INF1.MSKM_SBT_CD			未審査申込情報.申込種別コード
//	 *			 TXT-CKIFI001-INF1.MSKM_DTL_NO			未審査申込情報.申込明細番号
//	 *			 TXT-CKIFI001-INF1.MSKM_DTL_NO			未審査申込情報.申込明細番号
//	 *			 TXT-CKIFI001-INF1.CUST_NM			未審査申込情報.お客様名
//	 *			 TXT-CKIFI001-INF1.CUST_NM			未審査申込情報.お客様名
//	 *			 TXT-CKIFI001-INF1.CUST_KANA			未審査申込情報.お客様カナ名
//	 *			 TXT-CKIFI001-INF1.CUST_KANA			未審査申込情報.お客様カナ名
//	 *			 TXT-CKIFI001-INF1.KEISHA_TYPE_CD			未審査申込情報.契約者タイプコード
//	 *			 TXT-CKIFI001-INF1.KEISHA_TYPE_CD			未審査申込情報.契約者タイプコード
//	 *			 TXT-CKIFI001-INF1.SVC_KEI_NO			未審査申込情報.サービス契約番号
//	 *			 TXT-CKIFI001-INF1.SVC_KEI_NO			未審査申込情報.サービス契約番号
//	 *			 TXT-CKIFI001-INF1.IDO_DIV			未審査申込情報.異動区分
//	 *			 TXT-CKIFI001-INF1.IDO_DIV			未審査申込情報.異動区分
//	 * </pre>
//	 * <p>
//	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
//	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
//	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
//	 */
//	private boolean isSingleCheckCKIFI001_INF1(HashMap rsMap, HashMap itemvalueMap)
//	{
//		// 単項目チェックを行います
//		String strValue = null;
//
//		// 申込番号項目チェック
//		strValue = (String)rsMap.get("MSKM_NO");
//		// 桁数チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "12"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.MSKM_NO")});
//			return false;
//		}
//		// 属性チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.MSKM_NO")});
//			return false;
//		}
//
//		// ＳＹＳＩＤ項目チェック
//		strValue = (String)rsMap.get("SYSID");
//		// 桁数チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "10"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.SYSID")});
//			return false;
//		}
//		// 属性チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.SYSID")});
//			return false;
//		}
//
//		// 申込種別コード項目チェック
//		strValue = (String)rsMap.get("MSKM_SBT_CD");
//		// 桁数チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "5"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.MSKM_SBT_CD")});
//			return false;
//		}
//		// 属性チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.MSKM_SBT_CD")});
//			return false;
//		}
//
//		// 申込明細番号項目チェック
//		strValue = (String)rsMap.get("MSKM_DTL_NO");
//		// 桁数チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "12"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.MSKM_DTL_NO")});
//			return false;
//		}
//		// 属性チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.MSKM_DTL_NO")});
//			return false;
//		}
//
//		// お客様名項目チェック
//		strValue = (String)rsMap.get("CUST_NM");
//		// 桁数チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "242"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.CUST_NM")});
//			return false;
//		}
//		// 属性チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"name_address1"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.CUST_NM")});
//			return false;
//		}
//
//		// お客様カナ名項目チェック
//		strValue = (String)rsMap.get("CUST_KANA");
//		// 桁数チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "121"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.CUST_KANA")});
//			return false;
//		}
//		// 属性チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"zenkakukana"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.CUST_KANA")});
//			return false;
//		}
//
//		// 契約者タイプコード項目チェック
//		strValue = (String)rsMap.get("KEISHA_TYPE_CD");
//		// 桁数チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "1"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.KEISHA_TYPE_CD")});
//			return false;
//		}
//		// 属性チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.KEISHA_TYPE_CD")});
//			return false;
//		}
//
//		// サービス契約番号項目チェック
//		strValue = (String)rsMap.get("SVC_KEI_NO");
//		// 桁数チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "10"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.SVC_KEI_NO")});
//			return false;
//		}
//		// 属性チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.SVC_KEI_NO")});
//			return false;
//		}
//
//		// 異動区分項目チェック
//		strValue = (String)rsMap.get("IDO_DIV");
//		// 桁数チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "5"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.IDO_DIV")});
//			return false;
//		}
//		// 属性チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
//															(String)itemvalueMap.get("TXT-CKIFI001-INF1.IDO_DIV")});
//			return false;
//		}
//
//		return true;
//	}
/* ++++++++++ v7.00.00 削除終了 ++++++++++ */
	
	/**
	 * SQLKEY(CK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	審査．SYSID
	 *		 	審査．MSKM_DTL_NO
	 *		 	審査．SVC_KEI_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_JUDGE_CK_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_JUDGE.selectBySqlDefine(paramList, KK_T_JUDGE_CK_SELECT_002);
	}
	
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	審査番号				JUDGE_NO
	 *		 	審査対象種別コード				JUDGE_TG_SBT_CD
	 *		 	審査種別コード				JUDGE_SBT_CD
	 *		 	ＳＹＳＩＤ				SYSID
	 *		 	申込明細番号				MSKM_DTL_NO
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	サービス契約内訳番号				SVC_KEI_UCWK_NO
	 *		 	機器提供サービス契約番号				KKTK_SVC_KEI_NO
	 *		 	オプションサービス契約番号				OP_SVC_KEI_NO
	 *		 	サブオプションサービス契約番号				SBOP_SVC_KEI_NO
	 *		 	割引サービス契約番号				WRIB_SVC_KEI_NO
	 *		 	請求オプションサービス契約番号				SEIOPSVC_KEI_NO
	 *		 	審査年月日				JUDGE_YMD
	 *		 	審査判定結果コード				JUDGE_JUDGE_RSLT_CD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_JUDGE_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("JUDGE_NO", setParam[0]);
		setMap.setValue("JUDGE_TG_SBT_CD", setParam[1]);
		setMap.setValue("JUDGE_SBT_CD", setParam[2]);
		setMap.setValue("SYSID", setParam[3]);
		setMap.setValue("MSKM_DTL_NO", setParam[4]);
		setMap.setValue("SVC_KEI_NO", setParam[5]);
		setMap.setValue("SVC_KEI_UCWK_NO", setParam[6]);
		setMap.setValue("KKTK_SVC_KEI_NO", setParam[7]);
		setMap.setValue("OP_SVC_KEI_NO", setParam[8]);
		setMap.setValue("SBOP_SVC_KEI_NO", setParam[9]);
		setMap.setValue("WRIB_SVC_KEI_NO", setParam[10]);
		setMap.setValue("SEIOPSVC_KEI_NO", setParam[11]);
		setMap.setValue("JUDGE_YMD", setParam[12]);
		setMap.setValue("JUDGE_JUDGE_RSLT_CD", setParam[13]);
		setMap.setValue("ADD_DTM", setParam[14]);
		setMap.setValue("ADD_OPEACNT", setParam[15]);
		setMap.setValue("UPD_DTM", setParam[16]);
		setMap.setValue("UPD_OPEACNT", setParam[17]);
		setMap.setValue("DEL_DTM", setParam[18]);
		setMap.setValue("DEL_OPEACNT", setParam[19]);
		setMap.setValue("MK_FLG", setParam[20]);
		setMap.setValue("ADD_UNYO_YMD", setParam[21]);
		setMap.setValue("ADD_TRN_ID", setParam[22]);
		setMap.setValue("UPD_UNYO_YMD", setParam[23]);
		setMap.setValue("UPD_TRN_ID", setParam[24]);
		setMap.setValue("DEL_UNYO_YMD", setParam[25]);
		setMap.setValue("DEL_TRN_ID", setParam[26]);
	
		// DBアクセスを実行します
		db_KK_T_JUDGE.insertByPrimaryKeys(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 
	 *  不良顧客チェックファイルの作成を行います。
	 *  
	 * @return outputBean JBSbatOutputItem
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private JBSbatOutputItem createCkifm001() throws Exception 
	{
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		//入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		
		//項目を設定
		outmap.setString(JBSbatCKIFM001.MSKM_NO, mskmNo);					// 申込番号
		outmap.setString(JBSbatCKIFM001.SYSID, sysid);						// ＳＹＳＩＤ
		outmap.setString(JBSbatCKIFM001.MSKM_SBT_CD, mskmSbtCd);			// 申込種別コード
		outmap.setString(JBSbatCKIFM001.MSKM_DTL_NO, mskmDtlNo);			// 申込明細番号
		outmap.setString(JBSbatCKIFM001.CUST_NM, custNm);					// お客様名
		outmap.setString(JBSbatCKIFM001.CUST_KANA, custKana);				// お客様カナ名
		outmap.setString(JBSbatCKIFM001.KEISHA_TYPE_CD, keishaTypeCd);		// 契約者タイプコード
		outmap.setString(JBSbatCKIFM001.SVC_KEI_NO, svcKeiNo);				// サービス契約番号
		outmap.setString(JBSbatCKIFM001.IDO_DIV, idoDiv);					// 異動区分
		outmap.setString(JBSbatCKIFM001.JUDGE_NO, judgeNo);					// 審査番号
		outmap.setString(JBSbatCKIFM001.UPD_DTM_BF, lastUpdDtmBf);			// 更新年月日時分秒(初期検索)
		
		//出力フラグを設定
		outmap.setOutFlg(true);
		//出力共通電文に入出力インターフェースを設定する。
		outputBean.addOutMapList(outmap);
		//出力共通電文を返却
		return outputBean;
	}

	/**
	 * 
	 * 中間ファイルの読み込みを行います。
	 * 
	 * @param inMap 中間ファイルの値。
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void getCkifi001(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		mskmNo       = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCKIFI001.MSKM_NO));				// 申込番号
		sysid        = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCKIFI001.SYSID));				// ＳＹＳＩＤ
		mskmSbtCd    = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCKIFI001.MSKM_SBT_CD));			// 申込種別コード
		mskmDtlNo    = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCKIFI001.MSKM_DTL_NO));			// 申込明細番号
		custNm       = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCKIFI001.CUST_NM));				// お客様名
		custKana     = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCKIFI001.CUST_KANA));			// お客様カナ名
		keishaTypeCd = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCKIFI001.KEISHA_TYPE_CD));		// 契約者タイプコード
		svcKeiNo     = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCKIFI001.SVC_KEI_NO));			// サービス契約番号
		idoDiv       = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCKIFI001.IDO_DIV));				// 異動区分
	}
	
	/**
	 * 
	 * 審査情報の登録を行います。
	 * 
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void insertJudge() throws Exception
	{
		// システム日付を取得
		String sysDate = JCCBatCommon.getSysDateTimeStamp();
		
		judgeNo = JBSbatStringUtil.padNumFormString(
						JBSbatOracleSeqUtil.getNextSeq(
								commonItem.getConnection(), SEQ_JUDGE_NO), 12);			// 審査番号 → 自動採番

		// 登録する審査情報のパラメータを設定します
		String [] setParam = {
				judgeNo,													// 審査番号 → 自動採番
				"01",														// 審査対象種別コード → "01"(お客様)
				"06",														// 審査種別コード → "06"（不良顧客チェック）
				sysid,														// ＳＹＳＩＤ → 中間ファイル.ＳＹＳＩＤ
				mskmDtlNo,													// 申込明細番号 → 中間ファイル.申込明細番号
				svcKeiNo,													// サービス契約番号 → 中間ファイル．サービス契約番号
				"",															// サービス契約内訳番号 → NULL（未設定）
				"",															// 機器提供サービス契約番号 → NULL（未設定）
				"",															// オプションサービス契約番号 → NULL（未設定）
				"",															// サブオプションサービス契約番号 → NULL（未設定）
				"",															// 割引サービス契約番号 → NULL（未設定）
				"",															// 請求オプションサービス契約番号 → NULL（未設定）
				"",															// 審査年月日 → NULL（未設定）
				"",															// 結果コード → NULL（未設定）
				sysDate,													// 登録年月日時分秒 →  システム日時
				batchUserId,		 										// 登録オペレータアカウント → バッチ更新者ＩＤ
				sysDate,													// 更新年月日時分秒 →  システム日時
				batchUserId,												// 更新オペレータアカウント → バッチ更新者ＩＤ
				"",															// 削除年月日時分秒 → NULL（未設定）
				"",															// 削除オペレータアカウント → NULL（未設定）
				"0",														// 無効フラグ → "0"(有効)
				"",															// 登録運用年月日 → NULL（未設定）
				"",															// 登録処理ID → NULL（未設定）
				"",															// 更新運用年月日 → NULL（未設定）
				"",															// 更新処理ID → NULL（未設定）
				"",															// 削除運用年月日 → NULL（未設定）
				""};														// 削除処理ID → NULL（未設定）
		executeKK_T_JUDGE_PKINSERT(setParam);
	}
	
	/**
	 * サービス契約排他制御テーブルの検索を行います。
	 * <br>
	 * @param  svc_kei_no サービス契約番号
	 * @return 最終更新年月日時分秒
	 * @throws Exception 
	 */
	private String searchSvkeiExcCtrl(String svc_kei_no) throws Exception
	{
		// SQL実行結果取得用mapを生成（サービス契約TBL）
		JBSbatCommonDBInterface pkMap = new JBSbatCommonDBInterface();
	
		// 条件項目を設定します
		pkMap.setValue(JBSbatKK_T_SVKEI_EXC_CTRL.SVC_KEI_NO, svc_kei_no);
		super.logPrint.printDebugLog("pkParam(ｻｰﾋﾞｽ契約番号)：：：：：：" +  svc_kei_no);
	
		// PK検索を行う
		JBSbatCommonDBInterface outMap = db_KK_T_SVKEI_EXC_CTRL.selectByPrimaryKeys(pkMap);
		
		if(null == outMap)
		{
			super.logPrint.printDebugLog("サービス契約排他制御情報が存在しません。");
			// MSG サービス契約排他制御テーブルにサービス契約番号:ZZZZZZZZZZが存在しません。
			throw new JBSbatBusinessException("EKKB0210CE", new String[]{"サービス契約排他制御", "サービス契約番号:" + svc_kei_no});
		}
	
		return JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_SVKEI_EXC_CTRL.LAST_UPD_DTM));
	}
}
