/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKVoipShukMatch
*	ソースファイル名	：JBSbatKKVoipShukMatch.java
*	作成者				：富士通　
*	作成日				：2012年03月29日
*＜機能概要＞
*　ＶｏＩＰ集計表マッチング部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/03/29   富士通		新規作成
*	v4.00.00	2013/05/06  FJ)坂本     回線対象サービス契約の取得方法不備対応
*	v19.00.00	2015/09/09  FJ)松岡     【OM-2015-0002179】解約可否チェック比較方法不備
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.util.JBSbatCheckUtil;
import eo.business.util.file.JBSbatKKIFM167;
import eo.business.util.table.JBSbatKK_M_PCRS_OP_SVC;
import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_OPSVKEI_ISP;
import eo.business.util.file.JBSbatKKIFM170;
import eo.business.util.file.JBSbatKKIFM168;
import eo.common.constant.JPCBatchMessageConstant;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKVoipShukMatch extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_OP_SVC_KEI = "KK_T_OP_SVC_KEI";

	/** テーブル(料金コース＿オプションサービス)*/
	private static final String D_TBL_NAME_KK_M_PCRS_OP_SVC = "KK_M_PCRS_OP_SVC";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** SQL定義キー(KK_SELECT_048)*/
	private static final String KK_T_OP_SVC_KEI_KK_SELECT_048 = "KK_SELECT_048";

	/** SQL定義キー(KK_SELECT_049)*/
	private static final String KK_T_OP_SVC_KEI_KK_SELECT_049 = "KK_SELECT_049";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String KK_M_PCRS_OP_SVC_KK_SELECT_002 = "KK_SELECT_002";

	/** SQL定義キー(KK_SELECT_010)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_010 = "KK_SELECT_010";

	/** SQL定義キー(KK_SELECT_011)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_011 = "KK_SELECT_011";

	/** テーブルアクセスクラス(オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;

	/** テーブルアクセスクラス(料金コース＿オプションサービス)*/
	private JBSbatSQLAccess db_KK_M_PCRS_OP_SVC = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** マッチングテーブル */
	private String[][] matTable = null;
	
	// ST1-2012-0000494 2012/09/12 ADD START
	/** 日付の最大値*/
	private static final String MAX_VALUE = "20991231";
	// ST1-2012-0000494 2012/09/12 ADD END
	
	// --データ種別
	/** データ種別(データなし) */
	private static final int DATA_SBT_ADD_NONE = 0;
	
	/** データ種別(登録(登録未完了)) */
	private static final int DATA_SBT_ADD_NOT_FIN = 1;
	
	/** データ種別(登録(試用加入)) */
	private static final int DATA_SBT_ADD_FTRIAL_KANYU = 2;
	
	/** データ種別(登録(本加入)) */
	private static final int DATA_SBT_ADD_HONKANYU = 3;
	
	/** データ種別(解約(試用加入)) */
	private static final int DATA_SBT_DSL_FTRIAL_KANYU = 4;
	
	/** データ種別(解約) */
	private static final int DATA_SBT_DSL = 5;
	
	/** データ種別(登録未完了キャンセル) */
	private static final int DATA_SBT_NOT_FIN_CANCEL = 6;
	
	/** データ種別(エラー) */
	private static final int DATA_SBT_ERR = 7;
	
	// --eoオプション
	/** eoオプション(データなし) */
	private static final String EO_OP_TEL = "10";
	
	/** eoオプション(データなし) */
	private static final String EO_OP_EONETPH = "12";
	
	// --エラーメッセージ
	/** エラーメッセージ(データ種別エラー) */
	private static final String ERR_MSG_DATA_SBT_ERR = "データ種別エラー";
	
	/** エラーメッセージ(データ連携時エラーE2) */
	private static final String ERR_MSG_E2 = "登録(本加入)状態にて、データなし　データ連携時エラー";
	
	/** エラーメッセージ(データ連携時エラーE3) */
	private static final String ERR_MSG_E3 = "登録(試用加入)状態にて、登録(登録未完了)　データ連携時エラー";
	
	/** エラーメッセージ(データ連携時エラーE4) */
	private static final String ERR_MSG_E4 = "登録(本加入)状態にて、登録(登録未完了)　データ連携時エラー";
	
	/** エラーメッセージ(データ連携時エラーE5) */
	private static final String ERR_MSG_E5 = "登録(本加入)状態にて、登録(試用加入)　データ連携時エラー";
	
	/** エラーメッセージ(データ連携時エラーE6) */
	private static final String ERR_MSG_E6 = "登録(本加入)状態にて、解約(試用加入)　データ連携時エラー";
	
	/** エラーメッセージ(データ連携時エラーE7) */
	private static final String ERR_MSG_E7 = "解約(本加入)状態にて、解約(試用加入)　データ連携時エラー";
	
	/** エラーメッセージ(本体サービス解約時エラー) */
	private static final String ERR_MSG_DSL = "本体サービス解約時エラー";
	
	/** エラーメッセージ(未取込データワーニング) */
	private static final String ERR_MSG_MI_TORIKOMI = "未取込データワーニング";
	
	/** エラーメッセージ(重複エラー) */
	private static final String ERR_MSG_DBLE = "サービス契約番号／ＶｏＩＰユーザＩＤ重複エラー";
	
	// 20131219 OM-2013-0004377 ADD START
	/** オプションサービスコード（法人ＴＥＬｖｉｓｉｏｎ） */
	public static final String OP_SVC_CD_HOJIN_TEL = "B079";
	
	/** オプションサービスコード（法人ｅｏ−ｎｅｔフォン） */
	public static final String OP_SVC_CD_HOJIN_EONETPH = "B078";
	// 20131219 OM-2013-0004377 ADD END
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// マッチングテーブルの作成
		makeMatTable();
		
		// DBアクセスクラスを生成します
		db_KK_T_OP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		db_KK_M_PCRS_OP_SVC = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PCRS_OP_SVC);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 宣言
		int inputDataSbt = DATA_SBT_ADD_NONE;		// インプットファイルのデータ種別
		int tableDataSbt = DATA_SBT_ADD_NONE;		// テーブルのデータ種別
		String svkeiNo = null;						// サービス契約番号
		String voipUserId = null;					// VOIPユーザーID
		String taioNo = null;						// 対応番号
		String opSvcCd = null;						// オプションサービスコード
		JBSbatCommonDBInterface nextRec = null;		// 次レコード
		JBSbatServiceInterfaceMap fileMap = new JBSbatServiceInterfaceMap();	// ファイルマップ
		JBSbatOutputItem outputBean = new JBSbatOutputItem();					// 出力情報
		
		//--入力情報の単項目チェック
		if (!isSingleCheckKKIFM167_INF1(inMap.getMap(), getItemvalueMap()))
		{
			// エラーフラグ設定
			super.commonItem.setErrFlg(true);
			return null;
		}
		
		//--入力ファイルのデータ種別設定
		inputDataSbt = getDataSbt(inMap.getString(JBSbatKKIFM167.ADD_STAT),		// 登録状態
								inMap.getString(JBSbatKKIFM167.HONKANYU_YMD),	// 本加入年月日
								inMap.getString(JBSbatKKIFM167.SVC_DSL_YMD));	// サービス解約年月日
		
		//--テーブルのデータ種別設定
		opSvcCd = getOpSvcCd(inMap);
		if("".equals(opSvcCd))
		{	// eoオプションが不正値の場合
			
			taioNo = "E8";
		}
		
		// サービス契約番号取得
		svkeiNo = inMap.getString(JBSbatKKIFM167.SVKEI_NO);
		// VoIPユーザーID取得
		voipUserId = inMap.getString(JBSbatKKIFM167.VOIP_USER_ID);
		
		// テーブルのデータ種別を取得
		Object[] opSvcKeiSelect048Param = {svkeiNo,			// サービス契約番号
											opSvcCd,		// オプションサービスコード
											voipUserId,		// VoIPユーザーID
											svkeiNo,		// サービス契約番号
											opSvcCd,		// オプションサービスコード
											this.commonItem.getOpeDate(),	// 運用日
											voipUserId};	// VoIPユーザーID

		executeKK_T_OP_SVC_KEI_KK_SELECT_048(opSvcKeiSelect048Param);
		nextRec = db_KK_T_OP_SVC_KEI.selectNext();
		
		// データ種別取得
		if(nextRec != null)
		{
			
			tableDataSbt = getDataSbt(nextRec.getString(JBSbatKK_T_OPSVKEI_ISP.SIP_ADD_STAT_CD),	// 登録状態
										nextRec.getString(JBSbatKK_T_OP_SVC_KEI.HONKANYU_YMD),		// 本加入年月日
										nextRec.getString(JBSbatKK_T_OP_SVC_KEI.SVC_DSL_YMD));		// サービス解約年月日
		}
		
		//--マッチング処理
		if("E8".equals(taioNo))
		{
			// 処理なし
		}
		else if((inputDataSbt == DATA_SBT_ERR) || (tableDataSbt == DATA_SBT_ERR))
		{	// データ種別がエラーの場合
			
			taioNo = "E1";
		}
		else
		{	// データ種別がエラー以外の場合
			
			taioNo = this.matTable[inputDataSbt][tableDataSbt];
		}
		
		if("17".equals(taioNo))
		{	// データ種別が、SIPとテーブルの両方「解約」の場合
			
			if(!isDsl(inMap, nextRec))
			{
				taioNo = "SK";
			}
		}
		// 20140206 OM-2014-0000296 ADD START
		if ("03".equals(taioNo) || "07".equals(taioNo) || "11".equals(taioNo))
		{	// 一部内容変更で連携された場合に変更項目が何も無い場合は処理対象外とする
			if (!isItemChanged(inMap, nextRec))
			{
				// ログ出力
				super.logPrint.printDebugLog("更新項目がないため処理対象から除外します("
						+ " サービス契約番号：" + svkeiNo
						+ " VoIPユーザID：" + voipUserId
						+ " 対応番号：" + taioNo
						+ " )");
				taioNo = "SK";
			}
		}
		// 20140206 OM-2014-0000296 ADD END
		// 20131219 OM-2013-0004377 ADD START
		if(nextRec == null)
		{
			if (isHojin(inMap))
			{
				// 法人のデータがSIPから連携された場合、更新不要のためスキップする
				taioNo = "SK";
			}
		}
		// 20131219 OM-2013-0004377 ADD END
		
		if("SK".equals(taioNo))
		{	// 対応番号がスキップの場合、処理終了。
			return null;
		}
		
		//--整合性エラーチェック
		if((nextRec != null) && !isOutputErrorFile(outputBean, inMap, opSvcCd, nextRec.getString(JBSbatKK_T_OPSVKEI_ISP.OP_SVC_KEI_NO), taioNo))
		{	// エラーが無かった場合
			
			// ＳＩＰ情報連携ＯＰ情報更新ファイルの設定
			fileMap.setMap(inMap.getMap());
			fileMap.setString(JBSbatKKIFM168.TAIO_NO, taioNo);																		// 対応番号
			fileMap.setString(JBSbatKKIFM168.OP_SVC_KEI_NO, nextRec.getString(JBSbatKK_T_OPSVKEI_ISP.OP_SVC_KEI_NO));				// オプションサービス契約番号
			fileMap.setString(JBSbatKKIFM168.OPSVKEI_GENE_ADD_DTM, nextRec.getString(JBSbatKK_T_OP_SVC_KEI.GENE_ADD_DTM));			// 世代登録年月日時分秒
			fileMap.setString(JBSbatKKIFM168.OPSVKEI_ISP_GENE_ADD_DTM, nextRec.getString(JBSbatKK_T_OPSVKEI_ISP.GENE_ADD_DTM));		// ＩＳＰ世代登録年月日時分秒
			fileMap.setOutFlg(true);
			outputBean.addOutMapList(fileMap);
		}
		else if((nextRec == null) && !isOutputErrorFile(outputBean, inMap, opSvcCd, "", taioNo))
		{
			// ＳＩＰ情報連携ＯＰ情報更新ファイルの設定
			fileMap.setMap(inMap.getMap());
			fileMap.setString(JBSbatKKIFM168.TAIO_NO, taioNo);		// 対応番号
			fileMap.setOutFlg(true);
			outputBean.addOutMapList(fileMap);
		}
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_OP_SVC_KEI.close();
		db_KK_M_PCRS_OP_SVC.close();
		db_KK_T_SVC_KEI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * エラーメッセージに関する項目値を格納されたHashMap<String, String>を生成します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.エラーメッセージに関する項目値を格納されたHashMapを生成する。<br>
	 *
	 * 2.エラーメッセージに関する項目値を格納されたHashMapに値を設定する。<br>
	 * </pre>
	 * <p>
	 * @return HashMap<String, String>　エラーメッセージのリスト
	 */
	private HashMap<String, String> getItemvalueMap()
	{
		HashMap<String, String> itemvalueMapTable = new HashMap<String, String>();
		
		itemvalueMapTable.put("TXT-KKIFM167-INF1.SHUK_TRGT_PRD", "集計対象期間");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.SVKEI_NO", "サービス契約番号");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.FTRIAL_PRD_ENDYMD", "試用期間終了年月日");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.VOIP_USER_ID", "ＶｏＩＰユーザＩＤ");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.ADD_STAT", "登録状態");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.IP_TELNO", "ＩＰ電話番号");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.MLAD", "メールアドレス");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.EO_OP", "ｅｏオプション");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.SVC_DIV", "サービス区分");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.NAT_CHOU", "ＮＡＴ超え");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.FTRIAL_KANYU_YMD", "試用加入年月日");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.HONKANYU_IKO_YMD", "本加入移行期限年月日");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.HONKANYU_YMD", "本加入年月日");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.SVC_DSL_YMD", "サービス解約年月日");
		itemvalueMapTable.put("TXT-KKIFM167-INF1.TRAN_DTM", "処理日付");
		
		return itemvalueMapTable;
	}
	
	/**
	 * マッチングテーブルの作成
	 */
	private void makeMatTable()
	{
		String[][] table = {
								{"SK", "01", "01", "E2", "SK", "SK", "SK"},		// データなし
								{"02", "03", "E3", "E4", "04", "04", "04"},		// 登録(登録未完了)
								{"05", "06", "07", "E5", "08", "08", "08"},		// 登録(試用加入)
								{"09", "10", "10", "11", "12", "12", "12"},		// 登録(本加入)
								{"13", "14", "15", "E6", "14", "E7", "14"},		// 解約(試用加入)
								{"13", "14", "14", "16", "14", "17", "14"}		// 解約
		};
		
		this.matTable = table;
	}
	
	
	/**
	 * オプションサービスコード取得処理
	 * @param inMap　入力情報
	 * @return String　オプションサービスコード
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private String getOpSvcCd(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		String opSvcCd = "";
		String eoOp = inMap.getString(JBSbatKKIFM167.EO_OP);
		
		if(!isNullOrEmpty(eoOp))
		{
			if(eoOp.equals(EO_OP_TEL))
			{	// TELvisonの場合
				
				opSvcCd = JBSbatKKConst.OP_SVC_CD_TEL;
			}
			else if(eoOp.equals(EO_OP_EONETPH))
			{	// eoネットフォンの場合
				
				opSvcCd = JBSbatKKConst.OP_SVC_CD_EONETPH;
			}
		}
		
		return opSvcCd;
	}
	
	/**
	 * データ種別取得処理
	 * @param addStat　登録状態
	 * @param honkanyuYmd　本加入年月日
	 * @param svcDslYmd　サービス解約年月日
	 * @return String　データ種別
	 */
	private int getDataSbt(String addStat, String honkanyuYmd, String svcDslYmd)
	{
		int dataSbt = DATA_SBT_ERR;
		
		if(isNullOrEmpty(addStat) && isNullOrEmpty(honkanyuYmd) && isNullOrEmpty(svcDslYmd))
		{	// データ無しの場合
			
			dataSbt = DATA_SBT_ADD_NONE;
		}
		else if(isAddStatEqualsValue(addStat, JBSbatKKConst.SIP_ADD_STAT_NOT_FIN) && isNullOrEmpty(honkanyuYmd) && isNullOrEmpty(svcDslYmd))
		{	// 登録(登録未完了)の場合
			
			dataSbt = DATA_SBT_ADD_NOT_FIN;
		}
		else if(isAddStatEqualsValue(addStat, JBSbatKKConst.SIP_ADD_STAT_FIN) && isNullOrEmpty(honkanyuYmd) && isNullOrEmpty(svcDslYmd))
		{	// 登録(試用加入)の場合
			
			dataSbt = DATA_SBT_ADD_FTRIAL_KANYU;
		}
		else if(isAddStatEqualsValue(addStat, JBSbatKKConst.SIP_ADD_STAT_FIN) && !isNullOrEmpty(honkanyuYmd) && isNullOrEmpty(svcDslYmd))
		{	// 登録(本加入)の場合
			
			dataSbt = DATA_SBT_ADD_HONKANYU;
		}
		else if(isAddStatEqualsValue(addStat, JBSbatKKConst.SIP_ADD_STAT_FIN) && isNullOrEmpty(honkanyuYmd) && !isNullOrEmpty(svcDslYmd))
		{	// 解約(試用加入)の場合
			
			dataSbt = DATA_SBT_DSL_FTRIAL_KANYU;
		}
		else if(isAddStatEqualsValue(addStat, JBSbatKKConst.SIP_ADD_STAT_FIN) && !isNullOrEmpty(honkanyuYmd) && !isNullOrEmpty(svcDslYmd))
		{	// 解約の場合
			
			dataSbt = DATA_SBT_DSL;
		}
		else if(isAddStatEqualsValue(addStat, JBSbatKKConst.SIP_ADD_STAT_NOT_FIN) && isNullOrEmpty(honkanyuYmd) && !isNullOrEmpty(svcDslYmd))
		{	// 解約の場合
			
			dataSbt = DATA_SBT_NOT_FIN_CANCEL;
		}
		
		return dataSbt;
	}
	
	/**
	 * nullか空白の判定処理
	 * @param trgt　判定対象
	 * @return boolean　null空白判定結果
	 */
	private boolean isNullOrEmpty(String trgt)
	{
		boolean ret = false;
		// ST1-2012-0000494 2012/09/12 MOD START
		if((MAX_VALUE.equals(trgt)) || (trgt == null) || ("".equals(trgt)))
		//if((trgt == null) || ("".equals(trgt)))
		// ST1-2012-0000494 2012/09/12 MOD END
		{
			ret = true;
		}
		
		return ret;
	}
	
	/**
	 * nullか空白の判定処理
	 * @param trgt　登録状態
	 * @param value　比較文字
	 * @return boolean　null空白判定結果
	 */
	private boolean isAddStatEqualsValue(String addStat, String value)
	{
		boolean ret = false;
		
		if((addStat != null) && (addStat.equals(value)))
		{
			ret = true;
		}
		
		return ret;
	}
	
	/**
	 * 解約可否チェック処理
	 * @param inMap　入力情報
	 * @param rec　テーブルから取得した情報
	 * @return boolean　null空白判定結果
	 * @throws Exception
	 */
	private boolean isDsl(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface rec) throws Exception
	{
		int checkCnt = 0;
		
		// インプットファイルのデータ取得
		String sipAddStat = inMap.getString(JBSbatKKIFM167.ADD_STAT);							// 登録状態
		String sipMlad = inMap.getString(JBSbatKKIFM167.MLAD);									// メールアドレス
		String sipFtrialPrdEndymd = inMap.getString(JBSbatKKIFM167.FTRIAL_PRD_ENDYMD);			// 試用期間終了年月日
		String sipFtrialKanyuYmd = inMap.getString(JBSbatKKIFM167.FTRIAL_KANYU_YMD);			// 試用加入年月日
		String sipHonkanyuYmd = inMap.getString(JBSbatKKIFM167.HONKANYU_YMD);					// 本加入年月日
		String sipHonkanyuIkoYmd = inMap.getString(JBSbatKKIFM167.HONKANYU_IKO_YMD);			// 本加入移行期限年月日
		String sipSvcDslYmd = inMap.getString(JBSbatKKIFM167.SVC_DSL_YMD);						// サービス解約年月日
		
		
		// テーブルのデータ取得
		String tableAddStat = rec.getString(JBSbatKK_T_OPSVKEI_ISP.SIP_ADD_STAT_CD);				// 登録状態
		String tableMlad = rec.getString(JBSbatKK_T_OPSVKEI_ISP.SVC_KBT_SET_RRKS_MLAD);				// サービス個別設定連絡先メールアドレス
		String tableFtralPrdEndymd = rec.getString(JBSbatKK_T_OP_SVC_KEI.FTRIAL_PRD_ENDYMD);		// 試用期間終了年月日
		String tableFtrialKanyuYmd =  rec.getString(JBSbatKK_T_OP_SVC_KEI.FTRIAL_KANYU_YMD);		// 試用加入年月日
		String tableHonkanyuYmd = rec.getString(JBSbatKK_T_OP_SVC_KEI.HONKANYU_YMD);				// 本加入年月日
		String tableHonkanyuIkoYmd = rec.getString(JBSbatKK_T_OP_SVC_KEI.HONKANYU_IKO_KIGEN_YMD);	// 本加入移行期限年月日
		String tableSvcDslYmd = rec.getString(JBSbatKK_T_OP_SVC_KEI.SVC_DSL_YMD);					// サービス解約年月日
		
		//OM-2015-0002179 ADD START
		//連携ファイルが空白、DBがnullの項目を比較するため
		//連携ファイルの値が空白の場合にnullを設定します
		if(tableMlad == null)
		{
			tableMlad = "";
		}
		if(tableFtralPrdEndymd == null)
		{
			tableFtralPrdEndymd = "";
		}
		if(tableFtrialKanyuYmd == null)
		{
			tableFtrialKanyuYmd = "";
		}
		if(tableHonkanyuYmd == null)
		{
			tableHonkanyuYmd = "";
		}
		if(tableHonkanyuIkoYmd == null)
		{
			tableHonkanyuIkoYmd = "";
		}
		if(tableSvcDslYmd == null)
		{
			tableSvcDslYmd = "";
		}
		//OM-2015-0002179 ADD END
		
		// 登録状態の比較
		/* ■SIPとテーブルが両方解約の時、登録状態の違いが出ないので、比較の意味がない
		if(!sipAddStat.equals(tableAddStat))
		{
			checkCnt++;
		}
		*/
		
		// メールアドレスの比較
		if(!sipMlad.equals(tableMlad))
		{
			checkCnt++;
		}
		
		// 試用期間終了年月日の比較
		if(!sipFtrialPrdEndymd.equals(tableFtralPrdEndymd))
		{
			checkCnt++;
		}
		
		// 試用加入年月日の比較
		if(!sipFtrialKanyuYmd.equals(tableFtrialKanyuYmd))
		{
			checkCnt++;
		}
		
		// 本加入年月日の比較
		if(!sipHonkanyuYmd.equals(tableHonkanyuYmd))
		{
			checkCnt++;
		}
		
		// 本加入移行期限年月日の比較
		if(!sipHonkanyuIkoYmd.equals(tableHonkanyuIkoYmd))
		{
			checkCnt++;
		}
		
		// サービス解約年月日の比較
		if(!sipSvcDslYmd.equals(tableSvcDslYmd))
		{
			checkCnt++;
		}
		
		// 一つでもエラーだった場合は、falseを返す
		return (checkCnt > 0);
	}
	
	/**
	 * エラーファイルの出力可否チェック処理
	 * @param outputBean　出力情報
	 * @param inMap　入力電文
	 * @param opSvcCd　オプションサービスコード
	 * @param opsvkeiNo　オプションサービス契約番号
	 * @param taioNo　対応番号
	 * @return boolean　エラーファイルの出力可否
	 * @throws Exception　業務サービス内で発生した例外全般
	 */
	private boolean isOutputErrorFile(JBSbatOutputItem outputBean,
			JBSbatServiceInterfaceMap inMap,
			String opSvcCd,
			String opsvkeiNo,
			String taioNo) throws Exception
	{
		boolean isOutput = false;
		JBSbatServiceInterfaceMap fileMap = new JBSbatServiceInterfaceMap();
		
		// エラーファイルのマッピング
		fileMap.setString(JBSbatKKIFM170.SVC_KEI_NO, inMap.getString(JBSbatKKIFM167.SVKEI_NO));			// サービス契約番号
		fileMap.setString(JBSbatKKIFM170.VOIP_USER_ID, inMap.getString(JBSbatKKIFM167.VOIP_USER_ID));	// VoIPユーザーID
		fileMap.setString(JBSbatKKIFM170.TRK_JTI, inMap.getString(JBSbatKKIFM167.ADD_STAT));			// 登録状態
		fileMap.setString(JBSbatKKIFM170.EO_OP, inMap.getString(JBSbatKKIFM167.EO_OP));					// eoオプション
		fileMap.setString(JBSbatKKIFM170.SHR_DTM, inMap.getString(JBSbatKKIFM167.TRAN_DTM));			// 処理日時
		
		
		//--エラーチェック
		if(isTaioNoError(taioNo, fileMap))
		{	// 対応番号がエラー
			
			isOutput = true;
		}
		else if(checkSvcKeiKiyk3Days(fileMap, fileMap.getString(JBSbatKKIFM170.SVC_KEI_NO), commonItem.getOpeDate()))
		{	// サービス契約解約3日以降チェック
			
			isOutput = true;
		}
		else if(checkSvcKeiShusKiyk1Days(fileMap, fileMap.getString(JBSbatKKIFM170.SVC_KEI_NO), commonItem.getOpeDate()))
		{	// サービス契約照査前・解約1日後チェック
			
			isOutput = true;
		}
		else if(isOptCntOver(fileMap, opSvcCd, opsvkeiNo))
		{	// 最大オプション数超えチェック
			
			isOutput = true;
		}
		
		if(isOutput)
		{	// エラーがあった場合
			
			fileMap.setOutFlg(true);
			// エラーファイル出力
			outputBean.addOutMapList_2(fileMap);
		}
		
		return isOutput;
	}
	
	/**
	 * 対応番号エラーチェック処理
	 * @param taioNo　対応番号
	 * @param fileMap　ファイルマップ
	 * @return boolean　エラーファイルの出力可否
	 * @throws Exception　業務サービス内で発生した例外全般
	 */
	private boolean isTaioNoError(String taioNo, JBSbatServiceInterfaceMap fileMap) throws Exception
	{
		String errMsg = null;
		boolean isErr = true;
		
		if("E1".equals(taioNo) || "E8".equals(taioNo))
		{	// データ種別エラー
			
			errMsg = ERR_MSG_DATA_SBT_ERR;
		}
		else if("E2".equals(taioNo))
		{	// 対応番号がE2
			
			errMsg = ERR_MSG_E2;
		}
		else if("E3".equals(taioNo))
		{	// 対応番号がE3
			
			errMsg = ERR_MSG_E3;
		}
		else if("E4".equals(taioNo))
		{	// 対応番号がE4
			
			errMsg = ERR_MSG_E4;
		}
		else if("E5".equals(taioNo))
		{	// 対応番号がE5
			
			errMsg = ERR_MSG_E5;
		}
		else if("E6".equals(taioNo))
		{	// 対応番号がE6
			
			errMsg = ERR_MSG_E6;
		}
		else if("E7".equals(taioNo))
		{	// 対応番号がE7
			
			errMsg = ERR_MSG_E7;
		}
		else
		{	// エラーなし
			
			isErr = false;
		}
		
		// エラーがあった場合、エラー内容を設定
		if(isErr)
		{
			fileMap.setString(JBSbatKKIFM170.ER_NIYU, errMsg);
		}
		
		return isErr;
	}
	
	/**
	 * サービス契約解約3日以降判定を行う。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.サービス契約にアクセスするSQLを実行する。<br>
	 *
	 * 2.取得結果よりエラー判定を行い、その結果を返却する。<br>
	 * </pre>
	 * <p>
	 * @param fileMap　ファイルマップ
	 * @param svcKeiNo サービス契約番号。
	 * @param opeDate バッチ運用日。
	 * @return boolean 判定結果(true：エラー、false：非エラー)。
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private boolean checkSvcKeiKiyk3Days(JBSbatServiceInterfaceMap fileMap, String svcKeiNo, String opeDate) throws Exception
	{
		// 2013/05/06 回線対象サービス契約の取得方法不備対応 MOD START
		//String[] param = {svcKeiNo, opeDate, opeDate, opeDate, opeDate, opeDate, opeDate};
		String[] param = {svcKeiNo, opeDate, opeDate, opeDate, opeDate, opeDate, opeDate, opeDate};
		// 2013/05/06 回線対象サービス契約の取得方法不備対応 MOD END
		
		executeKK_T_SVC_KEI_KK_SELECT_010(param);
		JBSbatCommonDBInterface map = db_KK_T_SVC_KEI.selectNext();
		
		if (map.getBigDecimal("COUNT_NUM").intValue() == 0)
		{
			return false;
		}
		else
		{
			fileMap.setString(JBSbatKKIFM170.ER_NIYU, ERR_MSG_DSL);
			return true;
		}
	}
	
	/**
	 * サービス契約照査前・解約1日後判定を行う。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.サービス契約にアクセスするSQLを実行する。<br>
	 *
	 * 2.取得結果よりエラー判定を行い、その結果を返却する。<br>
	 * </pre>
	 * <p>
	 * @param fileMap　ファイルマップ
	 * @param svcKeiNo サービス契約番号。
	 * @param opeDate バッチ運用日。
	 * @return boolean 判定結果(true：エラー、false：非エラー)。
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private boolean checkSvcKeiShusKiyk1Days(JBSbatServiceInterfaceMap fileMap, String svcKeiNo, String opeDate) throws Exception
	{
		// 2013/05/06 回線対象サービス契約の取得方法不備対応 MOD START
		//String[] param = {svcKeiNo, opeDate, opeDate, opeDate, opeDate, opeDate, opeDate};
		String[] param = {svcKeiNo, opeDate, opeDate, opeDate, opeDate, opeDate, opeDate, opeDate};
		// 2013/05/06 回線対象サービス契約の取得方法不備対応 MOD END
		
		executeKK_T_SVC_KEI_KK_SELECT_011(param);
		JBSbatCommonDBInterface map = db_KK_T_SVC_KEI.selectNext();
		
		if (map.getBigDecimal("COUNT_NUM").intValue() == 0)
		{
			return false;
		}
		else
		{
			fileMap.setString(JBSbatKKIFM170.ER_NIYU, ERR_MSG_MI_TORIKOMI);
			return true;
		}
	}
	
	/**
	 * 最大オプション数超えチェック処理
	 * @param fileMap　ファイルマップ
	 * @param opSvcCd　オプションサービスコード
	 * @param opsvkeiNo　オプションサービス契約番号
	 * @return boolean　重複チェックエラー可否
	 * @throws Exception　業務サービス内で発生した例外全般
	 */
	private boolean isOptCntOver(JBSbatServiceInterfaceMap fileMap, String opSvcCd, String opsvkeiNo) throws Exception
	{
		boolean isErr = false;
		JBSbatCommonDBInterface opSvcKeiRec = null;		// オプションサービス契約レコード
		JBSbatCommonDBInterface pcrsOpSvcRec = null;	// 料金コース_オプションサービスレコード
		
		// オプションサービスの最大数を取得
		Object[] pcrsOpSvcWhereParam = {fileMap.getString(JBSbatKKIFM170.SVC_KEI_NO),	// サービス契約番号
										this.commonItem.getOpeDate(),	// 運用日
										opSvcCd,	// オプションサービスコード
										this.commonItem.getOpeDate(),		// 運用日
										this.commonItem.getOpeDate()		// 運用日
		};
		
		executeKK_M_PCRS_OP_SVC_KK_SELECT_002(pcrsOpSvcWhereParam);
		pcrsOpSvcRec = db_KK_M_PCRS_OP_SVC.selectNext();
		
		// １契約におけるオプションのレコード数取得
		Object[] opSvcKeiWhereParam = {fileMap.getString(JBSbatKKIFM167.VOIP_USER_ID),	// VoIPユーザーID
											opSvcCd,										// オプションサービスコード
											opsvkeiNo,										// オプションサービス契約番号
											this.commonItem.getOpeDate()};					// 運用日付
		
		executeKK_T_OP_SVC_KEI_KK_SELECT_049(opSvcKeiWhereParam);
		opSvcKeiRec = db_KK_T_OP_SVC_KEI.selectNext();
		
		if((opSvcKeiRec != null) && (pcrsOpSvcRec != null)
				&& ((opSvcKeiRec.getBigDecimal("OP_CNT").intValue() > pcrsOpSvcRec.getBigDecimal(JBSbatKK_M_PCRS_OP_SVC.MAX_OP_SVC_CNT).intValue())))
		{	// オプション最大数超えエラー
			
			isErr = true;
			fileMap.setString(JBSbatKKIFM170.ER_NIYU, ERR_MSG_DBLE);
		}
		
		return isErr;
	}
	// 20131219 OM-2013-0004377 ADD START
	/**
	 * 法人のチェック
	 * @param inMap　入力ファイル
	 * @return boolean　true：法人である、false：法人でない
	 * @throws Exception　業務サービス内で発生した例外全般
	 */
	private boolean isHojin(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		JBSbatCommonDBInterface opSvcKeiRec = null;		// オプションサービス契約レコード
		
		String hojinOpSvcCd = null;
		
		String eoOp = inMap.getString(JBSbatKKIFM167.EO_OP);
		
		if(!isNullOrEmpty(eoOp))
		{
			if(eoOp.equals(EO_OP_TEL))
			{	// TELvisonの場合
				
				hojinOpSvcCd = OP_SVC_CD_HOJIN_TEL;
			}
			else if(eoOp.equals(EO_OP_EONETPH))
			{	// eoネットフォンの場合
				
				hojinOpSvcCd = OP_SVC_CD_HOJIN_EONETPH;
			}
			
			// テーブルのデータ種別を取得
			Object[] opSvcKeiSelect048Param = 
				{
					inMap.getString(JBSbatKKIFM167.SVKEI_NO)		// サービス契約番号
					,hojinOpSvcCd									// オプションサービスコード
					,inMap.getString(JBSbatKKIFM167.VOIP_USER_ID)	// VoIPユーザーID
					,inMap.getString(JBSbatKKIFM167.SVKEI_NO)		// サービス契約番号
					,hojinOpSvcCd									// オプションサービスコード
					,this.commonItem.getOpeDate()					// 運用日
					,inMap.getString(JBSbatKKIFM167.VOIP_USER_ID)	// VoIPユーザーID
				};

			executeKK_T_OP_SVC_KEI_KK_SELECT_048(opSvcKeiSelect048Param);
			opSvcKeiRec = db_KK_T_OP_SVC_KEI.selectNext();
			
			if(opSvcKeiRec != null)
			{
				return true;
			}
		}
		
		return false;
	}
	// 20131219 OM-2013-0004377 ADD END
	
	// 20140206 OM-2014-0000296 ADD START
	/**
	 * 一部内容変更項目差分チェック
	 * @param inMap　入力情報
	 * @param rec　テーブルから取得した情報
	 * @return boolean　判定結果
	 * @throws Exception
	 */
	private boolean isItemChanged(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface rec)
		throws Exception
	{
		// インプットファイルのデータ取得
		String sipMlad = inMap.getString(JBSbatKKIFM167.MLAD);									// メールアドレス
		String sipFtrialPrdEndymd = inMap.getString(JBSbatKKIFM167.FTRIAL_PRD_ENDYMD);			// 試用期間終了年月日
		String sipFtrialKanyuYmd = inMap.getString(JBSbatKKIFM167.FTRIAL_KANYU_YMD);			// 試用加入年月日
		String sipHonkanyuYmd = inMap.getString(JBSbatKKIFM167.HONKANYU_YMD);					// 本加入年月日
		String sipHonkanyuIkoYmd = inMap.getString(JBSbatKKIFM167.HONKANYU_IKO_YMD);			// 本加入移行期限年月日
		
		// テーブルのデータ取得
		String tableMlad = rec.getString(JBSbatKK_T_OPSVKEI_ISP.SVC_KBT_SET_RRKS_MLAD);				// サービス個別設定連絡先メールアドレス
		String tableFtralPrdEndymd = rec.getString(JBSbatKK_T_OP_SVC_KEI.FTRIAL_PRD_ENDYMD);		// 試用期間終了年月日
		String tableFtrialKanyuYmd =  rec.getString(JBSbatKK_T_OP_SVC_KEI.FTRIAL_KANYU_YMD);		// 試用加入年月日
		String tableHonkanyuYmd = rec.getString(JBSbatKK_T_OP_SVC_KEI.HONKANYU_YMD);				// 本加入年月日
		String tableHonkanyuIkoYmd = rec.getString(JBSbatKK_T_OP_SVC_KEI.HONKANYU_IKO_KIGEN_YMD);	// 本加入移行期限年月日
		
		// インプットファイルのデータとの比較のためnullは空文字に置き換え
		tableMlad           = (tableMlad==null)          ?"":tableMlad;
		tableFtralPrdEndymd = (tableFtralPrdEndymd==null)?"":tableFtralPrdEndymd;
		tableFtrialKanyuYmd = (tableFtrialKanyuYmd==null)?"":tableFtrialKanyuYmd;
		tableHonkanyuYmd    = (tableHonkanyuYmd==null)   ?"":tableHonkanyuYmd;
		tableHonkanyuIkoYmd = (tableHonkanyuIkoYmd==null)?"":tableHonkanyuIkoYmd;
		
		// メールアドレスの比較
		if(!sipMlad.equals(tableMlad))
		{
			return true;
		}
		
		// 試用期間終了年月日の比較
		if(!sipFtrialPrdEndymd.equals(tableFtralPrdEndymd))
		{
			return true;
		}
		
		// 試用加入年月日の比較
		if(!sipFtrialKanyuYmd.equals(tableFtrialKanyuYmd))
		{
			return true;
		}
		
		// 本加入年月日の比較
		if(!sipHonkanyuYmd.equals(tableHonkanyuYmd))
		{
			return true;
		}
		
		// 本加入移行期限年月日の比較
		if(!sipHonkanyuIkoYmd.equals(tableHonkanyuIkoYmd))
		{
			return true;
		}
		
		return false;
	}
	// 20140206 OM-2014-0000296 ADD END
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 *入力情報（ＶｏＩＰ利用集計表）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 TXT-KKIFM167-INF1.SHUK_TRGT_PRD			ＶｏＩＰ利用集計表.集計対象期間
	 *			 TXT-KKIFM167-INF1.SVKEI_NO			ＶｏＩＰ利用集計表.サービス契約番号
	 *			 TXT-KKIFM167-INF1.SVKEI_NO			ＶｏＩＰ利用集計表.サービス契約番号
	 *			 TXT-KKIFM167-INF1.SVKEI_NO			ＶｏＩＰ利用集計表.サービス契約番号
	 *			 TXT-KKIFM167-INF1.FTRIAL_PRD_ENDYMD			ＶｏＩＰ利用集計表.試用期間終了年月日
	 *			 TXT-KKIFM167-INF1.FTRIAL_PRD_ENDYMD			ＶｏＩＰ利用集計表.試用期間終了年月日
	 *			 TXT-KKIFM167-INF1.VOIP_USER_ID			ＶｏＩＰ利用集計表.ＶｏＩＰユーザＩＤ
	 *			 TXT-KKIFM167-INF1.VOIP_USER_ID			ＶｏＩＰ利用集計表.ＶｏＩＰユーザＩＤ
	 *			 TXT-KKIFM167-INF1.VOIP_USER_ID			ＶｏＩＰ利用集計表.ＶｏＩＰユーザＩＤ
	 *			 TXT-KKIFM167-INF1.ADD_STAT			ＶｏＩＰ利用集計表.登録状態
	 *			 TXT-KKIFM167-INF1.ADD_STAT			ＶｏＩＰ利用集計表.登録状態
	 *			 TXT-KKIFM167-INF1.ADD_STAT			ＶｏＩＰ利用集計表.登録状態
	 *			 TXT-KKIFM167-INF1.IP_TELNO			ＶｏＩＰ利用集計表.ＩＰ電話番号
	 *			 TXT-KKIFM167-INF1.IP_TELNO			ＶｏＩＰ利用集計表.ＩＰ電話番号
	 *			 TXT-KKIFM167-INF1.MLAD			ＶｏＩＰ利用集計表.メールアドレス
	 *			 TXT-KKIFM167-INF1.MLAD			ＶｏＩＰ利用集計表.メールアドレス
	 *			 TXT-KKIFM167-INF1.MLAD			ＶｏＩＰ利用集計表.メールアドレス
	 *			 TXT-KKIFM167-INF1.EO_OP			ＶｏＩＰ利用集計表.ｅｏオプション
	 *			 TXT-KKIFM167-INF1.EO_OP			ＶｏＩＰ利用集計表.ｅｏオプション
	 *			 TXT-KKIFM167-INF1.EO_OP			ＶｏＩＰ利用集計表.ｅｏオプション
	 *			 TXT-KKIFM167-INF1.SVC_DIV			ＶｏＩＰ利用集計表.サービス区分
	 *			 TXT-KKIFM167-INF1.SVC_DIV			ＶｏＩＰ利用集計表.サービス区分
	 *			 TXT-KKIFM167-INF1.NAT_CHOU			ＶｏＩＰ利用集計表.ＮＡＴ超え
	 *			 TXT-KKIFM167-INF1.FTRIAL_KANYU_YMD			ＶｏＩＰ利用集計表.試用加入年月日
	 *			 TXT-KKIFM167-INF1.FTRIAL_KANYU_YMD			ＶｏＩＰ利用集計表.試用加入年月日
	 *			 TXT-KKIFM167-INF1.HONKANYU_IKO_YMD			ＶｏＩＰ利用集計表.本加入移行期限年月日
	 *			 TXT-KKIFM167-INF1.HONKANYU_IKO_YMD			ＶｏＩＰ利用集計表.本加入移行期限年月日
	 *			 TXT-KKIFM167-INF1.HONKANYU_YMD			ＶｏＩＰ利用集計表.本加入年月日
	 *			 TXT-KKIFM167-INF1.HONKANYU_YMD			ＶｏＩＰ利用集計表.本加入年月日
	 *			 TXT-KKIFM167-INF1.SVC_DSL_YMD			ＶｏＩＰ利用集計表.サービス解約年月日
	 *			 TXT-KKIFM167-INF1.SVC_DSL_YMD			ＶｏＩＰ利用集計表.サービス解約年月日
	 *			 TXT-KKIFM167-INF1.TRAN_DTM			ＶｏＩＰ利用集計表.処理日付
	 *			 TXT-KKIFM167-INF1.TRAN_DTM			ＶｏＩＰ利用集計表.処理日付
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	private boolean isSingleCheckKKIFM167_INF1(HashMap rsMap, HashMap itemvalueMap)
	{
		// 単項目チェックを行います
		String strValue = null;

		// 集計対象期間項目チェック
		strValue = (String)rsMap.get("SHUK_TRGT_PRD");
		// ST1-2012-0000494 ADD START
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.SHUK_TRGT_PRD")});
			return false;
		}
		// ST1-2012-0000494 ADD END
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "8"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.SHUK_TRGT_PRD")});
			return false;
		}
		// ST1-2012-0000494 ADD START
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakusuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.SHUK_TRGT_PRD")});
			return false;
		}
		// ST1-2012-0000494 ADD 

		// サービス契約番号項目チェック
		strValue = (String)rsMap.get("SVKEI_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.SVKEI_NO")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "10"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.SVKEI_NO")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.SVKEI_NO")});
			return false;
		}

		// 試用期間終了年月日項目チェック
		strValue = (String)rsMap.get("FTRIAL_PRD_ENDYMD");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "8"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.FTRIAL_PRD_ENDYMD")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"year_month_day1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.FTRIAL_PRD_ENDYMD")});
			return false;
		}

		// ＶｏＩＰユーザＩＤ項目チェック
		strValue = (String)rsMap.get("VOIP_USER_ID");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.VOIP_USER_ID")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "16"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.VOIP_USER_ID")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.VOIP_USER_ID")});
			return false;
		}

		// 登録状態項目チェック
		strValue = (String)rsMap.get("ADD_STAT");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.ADD_STAT")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.ADD_STAT")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.ADD_STAT")});
			return false;
		}

		// ＩＰ電話番号項目チェック
		strValue = (String)rsMap.get("IP_TELNO");
		// ST1-2012-0000494 ADD START
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.IP_TELNO")});
			return false;
		}
		// ST1-2012-0000494 ADD END
		// 桁数チェック
		// ST1-2012-0000494 MOD START
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "7"}))
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "11"}))
		// ST1-2012-0000494 MOD END
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.IP_TELNO")});
			return false;
		}
		// 属性チェック
		// ST1-2012-0000494 MOD START
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"tel2"}))
		// ST1-2012-0000494 MOD END
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.IP_TELNO")});
			return false;
		}

		// メールアドレス項目チェック
		strValue = (String)rsMap.get("MLAD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.MLAD")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "256"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.MLAD")});
			return false;
		}
		// 属性チェック
		// ST1-2012-0000494 MOD START
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"e-mail"}))
		//if(!JBSbatCheckUtil.invoke(strValue, new String[]{"e-mail2"}))
		// ST1-2012-0000494 MOD END
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.MLAD")});
			return false;
		}

		// ｅｏオプション項目チェック
		strValue = (String)rsMap.get("EO_OP");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.EO_OP")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "2"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.EO_OP")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.EO_OP")});
			return false;
		}

		// サービス区分項目チェック
		strValue = (String)rsMap.get("SVC_DIV");
		// ST1-2012-0000494 ADD START
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.SVC_DIV")});
			return false;
		}
		// ST1-2012-0000494 ADD END
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "2"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.SVC_DIV")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.SVC_DIV")});
			return false;
		}

		// ＮＡＴ超え項目チェック
		strValue = (String)rsMap.get("NAT_CHOU");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "10"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.NAT_CHOU")});
			return false;
		}
		// ST1-2012-0000494 ADD START
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakusuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.NAT_CHOU")});
			return false;
		}
		// ST1-2012-0000494 ADD END

		// 試用加入年月日項目チェック
		strValue = (String)rsMap.get("FTRIAL_KANYU_YMD");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "8"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.FTRIAL_KANYU_YMD")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"year_month_day1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.FTRIAL_KANYU_YMD")});
			return false;
		}

		// 本加入移行期限年月日項目チェック
		strValue = (String)rsMap.get("HONKANYU_IKO_YMD");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "8"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.HONKANYU_IKO_YMD")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"year_month_day1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.HONKANYU_IKO_YMD")});
			return false;
		}

		// 本加入年月日項目チェック
		strValue = (String)rsMap.get("HONKANYU_YMD");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "8"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.HONKANYU_YMD")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"year_month_day1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.HONKANYU_YMD")});
			return false;
		}

		// サービス解約年月日項目チェック
		strValue = (String)rsMap.get("SVC_DSL_YMD");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "8"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.SVC_DSL_YMD")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"year_month_day1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.SVC_DSL_YMD")});
			return false;
		}

		// 処理日付項目チェック
		strValue = (String)rsMap.get("TRAN_DTM");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "14"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.TRAN_DTM")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"day_hour4"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM167-INF1.TRAN_DTM")});
			return false;
		}

		return true;
	}

	/**
	 * SQLKEY(KK_SELECT_048)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	オプションサービスコード
	 *		 	VoIPユーザー
	 *		 	オプションサービス番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OP_SVC_KEI_KK_SELECT_048(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KK_SELECT_048);
	}

	/**
	 * SQLKEY(KK_SELECT_049)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	VoIPユーザーID
	 *		 	オプションサービスコード
	 *		 	オプションサービス番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OP_SVC_KEI_KK_SELECT_049(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_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KK_SELECT_049);
	}

	/**
	 * SQLKEY(KK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	料金コースコード
	 *		 	オプションサービスコード
	 *		 	オプションサービスコード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_PCRS_OP_SVC_KK_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());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_KK_M_PCRS_OP_SVC.selectBySqlDefine(paramList, KK_M_PCRS_OP_SVC_KK_SELECT_002);
	}

	/**
	 * SQLKEY(KK_SELECT_010)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	運用日
	 *		 	運用日
	 *		 	運用日
	 *		 	運用日
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_010(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		// 2013/05/06 回線対象サービス契約の取得方法不備対応 ADD START
		paramList.setValue(param[7].toString());
		// 2013/05/06 回線対象サービス契約の取得方法不備対応 ADD END

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_010);
	}

	/**
	 * SQLKEY(KK_SELECT_011)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	運用日
	 *		 	運用日
	 *		 	運用日
	 *		 	運用日
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_011(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		// 2013/05/06 回線対象サービス契約の取得方法不備対応 ADD START
		paramList.setValue(param[7].toString());
		// 2013/05/06 回線対象サービス契約の取得方法不備対応 ADD END

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_011);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
