/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKMapInfSakseiAreaReq
*	ソースファイル名	：JBSbatKKMapInfSakseiAreaReq.java
*	作成者				：富士通　
*	作成日				：2012年10月25日
*＜機能概要＞
*　地図情報作成-エリアリクエスト部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00		2012/10/25	FJ)藤原		【ST4-2012-0000012】新規作成
*	v23.00		2016/03/23	FJ)松岡		【OM-2016-0000597】空白値が更新できない
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
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.common.JBSbatMatchServiceInterface;
import eo.business.util.file.JBSbatKKIFM278;
import eo.business.util.file.JBSbatKKIFM703;
import eo.business.util.file.JBSbatKKIFM428;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatCK_T_CUST_HOJIN;
import eo.business.util.table.JBSbatCK_T_RRKS;
import eo.business.util.table.JBSbatKK_M_PRC_GRP;
import eo.business.util.table.JBSbatKK_T_MSKM;
import eo.business.util.table.JBSbatKK_T_MSKM_DTL;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.business.util.table.JBSbatKU_T_KOJIAK;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKMapInfSakseiAreaReq extends JBSbatBusinessService implements JBSbatMatchServiceInterface
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** キーマッチ処理フラグ*/
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ*/
	private boolean mastProcFlg;

	/** トランファイル処理フラグ*/
	private boolean tranProcFlg;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
//OM-2016-0000597 ADD START 2016/03/23
	/** テーブル(料金グループ)*/
	private static final String D_TBL_NAME_KK_M_PRC_GRP = "KK_M_PRC_GRP";

	/** SQL定義キー(KK_SELECT_011)*/
	private static final String KK_M_PRC_GRP_KK_SELECT_011 = "KK_SELECT_011";

	/** テーブルアクセスクラス(料金グループ)*/
	private JBSbatSQLAccess db_KK_M_PRC_GRP = null;
	
	/** 料金グループマップ */
	private HashMap<String, String> mPrcGrpMap = null;
//OM-2016-0000597 ADD END 2016/03/23
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
//OM-2016-0000597 ADD START 2016/03/23		
		// DBアクセスクラスを生成します
		db_KK_M_PRC_GRP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PRC_GRP);
		Object[] prc_grp_inParam = { super.opeDate };
		this.mPrcGrpMap = new HashMap<String, String>();
		this.getKK_M_PRC_GRP(prc_grp_inParam, this.mPrcGrpMap);
//OM-2016-0000597 ADD END 2016/03/23
	}

	/**
	 * 主処理
	 * @param mastMap　入力電文
	 * @param tranMap　入力電文
	 * @param outputInItem  入力情報
	 * @return JBSbatOutputItem 出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap, JBSbatOutputItem outputInItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		// 単項目チェック
		// マージ地図情報ファイルレコードがnullである(全て読み込み終えnullとなった)場合
		if(null == tranMap)
		{
			if(!isSingleCheckKKIFM278_INF1(mastMap.getMap(), getItemValueMap()))
			{
				// エリアリクエスト抽出ファイルのレコードを進める
				this.setMastProcFlg(true);
				super.commonItem.setErrFlg(true);
				return new JBSbatOutputItem();
			}
		}
		// マージ地図情報ファイルレコードがnullでない(入力がある)場合
		if(null != tranMap)
		{
			if(!isSingleCheckKKIFM278_INF2(tranMap.getMap(), getItemValueMap()))
			{
				// マージ地図情報ファイルのレコードを進める
				this.setTranProcFlg(true);
				super.commonItem.setErrFlg(true);
				return new JBSbatOutputItem();
			}
		}
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		// 入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		
		// マージ地図情報ファイルレコードがnullでない場合
		if(null != tranMap)
		{
//OM-2016-0000597 MOD START 2016/03/23	
//			// マージ地図情報ファイルレコードを出力
//			outmap = tranMap;
			
			//////////////////////////////
			//出力ファイルの設定値を取得//
			//////////////////////////////
			// SYSID
			String sysid = tranMap.getString(JBSbatKKIFM703.SYSID);
			// サービス契約番号
			String svc_kei_no = tranMap.getString(JBSbatKKIFM703.SVC_KEI_NO);
			// 現在工程を判定する
			String[] now_step_jdg_rslt = null;
			
			
			// サービス契約での判定結果
			JBSbatKKMapInfSaiChshtSvkei mapInfSaiChshtSvkei = new JBSbatKKMapInfSaiChshtSvkei();
			String[] svkei_now_step_jdg_rslt =mapInfSaiChshtSvkei.getNowStepCd(tranMap);
			
			// 工事案件種別コード
			String kojiak_sbt_cd = tranMap.getString(JBSbatKKIFM703.KOJIAK_SBT_CD);
			// OPMS連携コード
			String opms_rnki_cd = tranMap.getString(JBSbatKKIFM703.OPMS_RNKI_CD);
			// 最終応答結果コード
			String last_rsp_rslt_cd = tranMap.getString(JBSbatKKIFM703.LAST_RSP_RSLT_CD);
			JBSbatKKMapInfSaiChshtKojiak mapInfSaiChshtKojiak = new JBSbatKKMapInfSaiChshtKojiak();
			String[] kojiak_now_step_jdg_rslt = mapInfSaiChshtKojiak.getNowStepCd(kojiak_sbt_cd, opms_rnki_cd, last_rsp_rslt_cd);
			
			if( svkei_now_step_jdg_rslt[0] == null || svkei_now_step_jdg_rslt[0].trim().length()==0 ){
				
				if(kojiak_now_step_jdg_rslt[0] == null || kojiak_now_step_jdg_rslt[0].trim().length()==0){
					// サービス契約・工事案件どちらも判定できなかった場合は初期値
					now_step_jdg_rslt = new String[]{"", ""};
				}else{
					// 工事から取れたら工事案件のを採用
					now_step_jdg_rslt = kojiak_now_step_jdg_rslt;
				}
			}else{
				if(kojiak_now_step_jdg_rslt[0] == null || kojiak_now_step_jdg_rslt[0].trim().length()==0){
					// サービス契約だけ取れたらサービス契約のを採用
					now_step_jdg_rslt = svkei_now_step_jdg_rslt;
				}else{
					// サービス契約・工事案件両方取れた場合は日付で比較
					
					// サービス契約更新運用日
					String svcUpdUnyoYmd = tranMap.getString(JBSbatKKIFM703.SVC_UPD_UNYO_YMD);
					// 工事案件更新運用日
					String kojiUpdUnyoYmd = tranMap.getString(JBSbatKKIFM703.KOJI_UPD_UNYO_YMD);
					// どちらか取れなければ処理対象外
					if( svcUpdUnyoYmd == null || svcUpdUnyoYmd.trim().length()==0 || kojiUpdUnyoYmd == null || kojiUpdUnyoYmd.trim().length()==0 ){
						now_step_jdg_rslt = new String[]{"", ""};
					}
					
					// サービス契約更新運用日
					int svc_upd_unyo_ymd = Integer.parseInt(svcUpdUnyoYmd);
					// 工事案件更新運用日
					int koji_upd_unyo_ymd = Integer.parseInt(kojiUpdUnyoYmd);
					
					if(svc_upd_unyo_ymd > koji_upd_unyo_ymd)
					{
						now_step_jdg_rslt = svkei_now_step_jdg_rslt;
					}
					else
					{
						now_step_jdg_rslt = kojiak_now_step_jdg_rslt;
					}
				}
			}
			
			
			// 現在工程コード
			String now_step_cd = now_step_jdg_rslt[0];
			// 現在工程名
			String now_step_nm = now_step_jdg_rslt[1];
			// 料金グループコード
			String prc_grp_cd = tranMap.getString(JBSbatKKIFM703.SVC_CD);
			// 料金グループ名取得
			String prc_grp_nm = new String();
			if(null != this.mPrcGrpMap && null != this.mPrcGrpMap.get(prc_grp_cd))
			{
				// 取得した料金グループ名を保持
				prc_grp_nm = this.mPrcGrpMap.get(prc_grp_cd);
			}
			else
			{
				// 料金グループ名が取得できない場合はスキップする
				return outputBean;
			}
			// X座標
			String xzahyo = tranMap.getString(JBSbatKKIFM703.XZAHYO);
			// X座標がnullまたは空文字の場合、0に置き換える
			xzahyo = getCkanNullto0(xzahyo);
			// Y座標
			String yzahyo = tranMap.getString(JBSbatKKIFM703.YZAHYO);
			// Y座標がnullまたは空文字の場合、0に置き換える
			yzahyo = getCkanNullto0(yzahyo);
			// 経度
			String lgtd = tranMap.getString(JBSbatKKIFM703.LGTD);
			// 経度がnullの場合、0に置き換える
			lgtd = getCkanNullto0(lgtd);
			// 緯度
			String lttd = tranMap.getString(JBSbatKKIFM703.LTTD);
			// 緯度が経度がnullの場合、0に置き換える
			lttd = getCkanNullto0(lttd);
			// お客様名
			String cust_nm = tranMap.getString(JBSbatKKIFM703.CUST_NM);
			// お客様カナ名
			String cust_kana = tranMap.getString(JBSbatKKIFM703.CUST_KANA);
			// 契約者タイプコード名称
			String keisha_type_cd_nm = tranMap.getString(JBSbatKKIFM703.CUST_TYPE_NM);
			// 連絡先自宅電話番号
			String hm_telno = tranMap.getString(JBSbatKKIFM703.HM_TELNO);
			// 連絡先携帯電話番号
			String hp_telno = tranMap.getString(JBSbatKKIFM703.HP_TELNO);
			// 連絡先会社電話番号
			String comp_telno = tranMap.getString(JBSbatKKIFM703.COMP_TELNO);
			// メールアドレス
			String mlad = tranMap.getString(JBSbatKKIFM703.MLAD);
			// お客様生年月日
			String cust_birthd = tranMap.getString(JBSbatKKIFM703.CUST_BIRTHD);
			// お客様性別コード名称
			String cust_sex_cd_nm = tranMap.getString(JBSbatKKIFM703.CUST_SEX_NM);
			// 業種名
			String gyou_nm = tranMap.getString(JBSbatKKIFM703.GSHU_NM);
			// 会社名
			String comp_nm = tranMap.getString(JBSbatKKIFM703.COMP_NM);
			// 代表者役職名
			String dihysha_post_nm = tranMap.getString(JBSbatKKIFM703.DIHYSHA_POST_NM);
			// 代表者名
			String daihyou_mei = tranMap.getString(JBSbatKKIFM703.DIHYSHA_NM);
			// 契約者住所コード
			String keisha_ad_cd = tranMap.getString(JBSbatKKIFM703.KEISHA_AD_CD);
			// 契約者郵便番号
			String keisha_pcd = tranMap.getString(JBSbatKKIFM703.KEISHA_PCD);
			// 契約者都道府県名
			String keisha_state_nm = tranMap.getString(JBSbatKKIFM703.KEISHA_STATE_NM);
			// 契約者市区町村名
			String keisha_city_nm = tranMap.getString(JBSbatKKIFM703.KEISHA_CITY_NM);
			// 契約者大字通称名
			String keisha_oaztsu_nm = tranMap.getString(JBSbatKKIFM703.KEISHA_OAZTSU_NM);
			// 契約者字丁目名
			String keisha_azcho_nm = tranMap.getString(JBSbatKKIFM703.KEISHA_AZCHO_NM);
			// 契約者番地号
			String keisha_bnchigo = tranMap.getString(JBSbatKKIFM703.KEISHA_BNCHIGO);
			// 契約者住所補記・建物名
			String keisha_adrttm = tranMap.getString(JBSbatKKIFM703.KEISHA_ADRTTM);
			// 契約者住所補記・部屋番号
			String keisha_adrrm = tranMap.getString(JBSbatKKIFM703.KEISHA_ADRRM);
			// サービス開始年月日
			String svc_sta_ymd = tranMap.getString(JBSbatKKIFM703.SVC_STA_YMD);
			// 申込年月日
			String mskm_ymd = tranMap.getString(JBSbatKKIFM703.MSKM_YMD);
			// 申込書番号
			String mskmsho_no = tranMap.getString(JBSbatKKIFM703.MSKMSHO_NO);
			// 申込受付年月日時分秒
			String mskm_uk_dtm = tranMap.getString(JBSbatKKIFM703.MSKM_UK_DTM);
			// 申込受付年月日時分秒から年月日のみを取得する
			mskm_uk_dtm = getCkanDigit17to8(mskm_uk_dtm);
			// サービス終了年月日
			String svc_end_ymd = tranMap.getString(JBSbatKKIFM703.SVC_END_YMD);
			
			/////////////////////////////////////////
			//出力ファイル用Mapに主取得した値を格納//
			/////////////////////////////////////////
			// SYSID
			outmap.setString(JBSbatKKIFM278.SYSID, sysid);
			// お客さまID
			outmap.setString(JBSbatKKIFM278.SVC_KEI_NO, svc_kei_no);
			// 現在工程コード
			outmap.setString(JBSbatKKIFM278.PRC_CD, now_step_cd);
			// 現在工程名
			outmap.setString(JBSbatKKIFM278.PRC_NM, now_step_nm);
			// サービスコード
			outmap.setString(JBSbatKKIFM278.SVC_CD, prc_grp_cd);
			// サービス名称
			outmap.setString(JBSbatKKIFM278.SVC_NM, prc_grp_nm);
			// X座標
			outmap.setString(JBSbatKKIFM278.XZAHYO, xzahyo);
			// Y座標
			outmap.setString(JBSbatKKIFM278.YZAHYO, yzahyo);
			// 経度
			outmap.setString(JBSbatKKIFM278.LGTD, lgtd);
			// 緯度
			outmap.setString(JBSbatKKIFM278.LTTD, lttd);
			// お客様名
			outmap.setString(JBSbatKKIFM278.CUST_NM, cust_nm);
			// お客様名カナ
			outmap.setString(JBSbatKKIFM278.CUST_KANA, cust_kana);
			// 契約者タイプ名
			outmap.setString(JBSbatKKIFM278.CUST_TYPE_NM, keisha_type_cd_nm);
			// 連絡先自宅電話番号
			outmap.setString(JBSbatKKIFM278.HM_TELNO, hm_telno);
			// 連絡先携帯電話番号
			outmap.setString(JBSbatKKIFM278.HP_TELNO, hp_telno);
			// 連絡先会社電話番号
			outmap.setString(JBSbatKKIFM278.COMP_TELNO, comp_telno);
			// メールアドレス
			outmap.setString(JBSbatKKIFM278.MLAD, mlad);
			// お客様生年月日
			outmap.setString(JBSbatKKIFM278.CUST_BIRTHD, cust_birthd);
			// お客様性別名
			outmap.setString(JBSbatKKIFM278.CUST_SEX_NM, cust_sex_cd_nm);
			// 業種名
			outmap.setString(JBSbatKKIFM278.GSHU_NM, gyou_nm);
			// 会社名
			outmap.setString(JBSbatKKIFM278.COMP_NM, comp_nm);
			// 代表者役職名
			outmap.setString(JBSbatKKIFM278.DIHYSHA_POST_NM, dihysha_post_nm);
			// 代表者名
			outmap.setString(JBSbatKKIFM278.DIHYSHA_NM, daihyou_mei);
			// 契約者住所コード
			outmap.setString(JBSbatKKIFM278.KEISHA_AD_CD, keisha_ad_cd);
			// 契約者郵便番号
			outmap.setString(JBSbatKKIFM278.KEISHA_PCD, keisha_pcd);
			// 契約者都道府県名
			outmap.setString(JBSbatKKIFM278.KEISHA_STATE_NM, keisha_state_nm);
			// 契約者市区町村名
			outmap.setString(JBSbatKKIFM278.KEISHA_CITY_NM, keisha_city_nm);
			// 契約者大字通称名
			outmap.setString(JBSbatKKIFM278.KEISHA_OAZTSU_NM, keisha_oaztsu_nm);
			// 契約者字丁目名
			outmap.setString(JBSbatKKIFM278.KEISHA_AZCHO_NM, keisha_azcho_nm);
			// 契約者番地号
			outmap.setString(JBSbatKKIFM278.KEISHA_BNCHIGO, keisha_bnchigo);
			// 契約者住所補記・建物名
			outmap.setString(JBSbatKKIFM278.KEISHA_ADRTTM, keisha_adrttm);
			// 契約者住所補記・部屋番号
			outmap.setString(JBSbatKKIFM278.KEISHA_ADRRM, keisha_adrrm);
			// サービス開始年月日
			outmap.setString(JBSbatKKIFM278.SVC_STA_YMD, svc_sta_ymd);
			// 申込年月日
			outmap.setString(JBSbatKKIFM278.MSKM_YMD, mskm_ymd);
			// 申込書番号
			outmap.setString(JBSbatKKIFM278.MSKMSHO_NO, mskmsho_no);
			// 申込受付年月日
			outmap.setString(JBSbatKKIFM278.MSKM_UK_YMD, mskm_uk_dtm);
			// サービス終了年月日
			outmap.setString(JBSbatKKIFM278.SVC_END_YMD, svc_end_ymd);
			
//OM-2016-0000597 MOD END 2016/03/23
			// マージ地図情報ファイルのレコードを進める
			this.setTranProcFlg(true);
		}
		// マージ地図情報ファイルレコードがnullである(全て読み込み終えnullとなった)場合
		else
		{
			// エリアリクエスト抽出ファイルレコードを出力
			outmap = mastMap;
			// エリアリクエスト抽出ファイルのレコードを進める
			this.setMastProcFlg(true);
		}
		
		// 出力フラグを設定
		outmap.setOutFlg(true);
		// 出力共通電文に入出力インターフェースを設定する
		outputBean.addOutMapList(outmap);
		
		// 出力共通電文を返却
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * @return mastProcFlg を戻します。
	 */
	public boolean isMastProcFlg()
	{
		return mastProcFlg;
	}

	/**
	 * @return matchProcFlg を戻します。
	 */
	public boolean isMatchProcFlg()
	{
		return matchProcFlg;
	}

	/**
	 * @return tranProcFlg を戻します。
	 */
	public boolean isTranProcFlg()
	{
		return tranProcFlg;
	}

	/**
	 * @param mast_ProcFlg 設定する mastProcFlg。
	 */
	public void setMastProcFlg(boolean mast_ProcFlg)
	{
		this.mastProcFlg = mast_ProcFlg;
	}

	/**
	 * @param match_ProcFlg 設定する matchProcFlg。
	 */
	public void setMatchProcFlg(boolean match_ProcFlg)
	{
		this.matchProcFlg = match_ProcFlg;
	}

	/**
	 * @param tran_ProcFlg 設定する tranProcFlg。
	 */
	public void setTranProcFlg(boolean tran_ProcFlg)
	{
		this.tranProcFlg = tran_ProcFlg;
	}

	/**
	 *入力情報（地図情報ファイル）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 TXT-KKIFM278-INF1.SYSID			地図情報ファイル.ＳＹＳＩＤ
	 *			 TXT-KKIFM278-INF1.SVC_KEI_NO			地図情報ファイル.お客さまＩＤ
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	private boolean isSingleCheckKKIFM278_INF1(HashMap rsMap, HashMap itemvalueMap)
	{
		// 単項目チェックを行います
		String strValue = null;

		// ＳＹＳＩＤ項目チェック
		strValue = (String)rsMap.get("SYSID");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM278-INF1.SYSID")});
			return false;
		}

		// お客さまＩＤ項目チェック
		strValue = (String)rsMap.get("SVC_KEI_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM278-INF1.SVC_KEI_NO")});
			return false;
		}

		return true;
	}

	/**
	 *入力情報（地図情報ファイル）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 TXT-KKIFM278-INF2.SYSID			地図情報ファイル.ＳＹＳＩＤ
	 *			 TXT-KKIFM278-INF2.SVC_KEI_NO			地図情報ファイル.お客さまＩＤ
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	private boolean isSingleCheckKKIFM278_INF2(HashMap rsMap, HashMap itemvalueMap)
	{
		// 単項目チェックを行います
		String strValue = null;

		// ＳＹＳＩＤ項目チェック
		strValue = (String)rsMap.get("SYSID");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM278-INF2.SYSID")});
			return false;
		}

		// お客さまＩＤ項目チェック
		strValue = (String)rsMap.get("SVC_KEI_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM278-INF2.SVC_KEI_NO")});
			return false;
		}

		return true;
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * エラーメッセージに関する項目値を格納されたHashMap<String, String>を生成します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.エラーメッセージに関する項目値を格納されたHashMapを生成する。<br>
	 *
	 * 2.エラーメッセージに関する項目値を格納されたHashMapに値を設定する。<br>
	 * </pre>
	 * <p>
	 * @return itemvalueMap エラーメッセージに関する項目値を格納されたHashMap
	 */
	private HashMap<String, String> getItemValueMap()
	{
		// エラーメッセージに関する項目値が格納されたHashMapを設定
		HashMap<String, String> itemvalueMap = new HashMap<String, String>();
		itemvalueMap.put("TXT-KKIFM278-INF1.SYSID", "SYSID");
		itemvalueMap.put("TXT-KKIFM278-INF1.SVC_KEI_NO", "お客さまID");
		itemvalueMap.put("TXT-KKIFM278-INF2.SYSID", "SYSID");
		itemvalueMap.put("TXT-KKIFM278-INF2.SVC_KEI_NO", "お客さまID");

		return itemvalueMap;
	}
//OM-2016-0000597 ADD START 2016/03/23
	/**
	 * 料金グループ情報のデータを取得します。
	 * <BR>
	 * @param inParam 料金グループ情報DBアクセス入力
	 * @param outMap 料金グループ情報DBアクセス出力
	 * @throws Exception 
	 */
	private void getKK_M_PRC_GRP(Object[] inParam, HashMap<String, String> outMap) throws Exception
	{
		// 料金グループ情報DBアクセス実施
		executeKK_M_PRC_GRP_KK_SELECT_011(inParam);
		
		// 発行結果取得
		JBSbatCommonDBInterface resultMap = db_KK_M_PRC_GRP.selectNext();
		
		String prcGrpCd = null;		// 料金グループコード
		String prcGrpNm = null;		// 料金グループ名
		
		while(null != resultMap)
		{
			prcGrpCd = resultMap.getString(JBSbatKK_M_PRC_GRP.PRC_GRP_CD);
			prcGrpNm = resultMap.getString(JBSbatKK_M_PRC_GRP.PRC_GRP_NM);
			
			if(!("".equals(prcGrpCd)) && !("".equals(prcGrpNm)))
			{
				// 料金グループコードをキーに料金グループ名を格納
				outMap.put(prcGrpCd, prcGrpNm);
			}
			// 次のマップへ
			resultMap = db_KK_M_PRC_GRP.selectNext();
		}
	}
	/**
	 * 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_M_PRC_GRP_KK_SELECT_011(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_M_PRC_GRP.selectBySqlDefine(paramList, KK_M_PRC_GRP_KK_SELECT_011);
	}
	/**
	 * Nullまたは""の文字列を"0"に置換<br>
	 * <br>
	 * 入力文字列がNullまたは""である場合に"0"で返却します。<br>
	 * <br>
	 * @param target 入力文字列
	 * @return 条件を満たした場合"0"、それ以外の場合は入力文字列
	 */
	private String getCkanNullto0(String target)
	{
		String ret_value = "0";
		if(null == target || "".equals(target))
		{
			return ret_value;
		}
		return target;
	}
	/**
	 * 年月日時分秒(17桁)を年月日(8桁)に置換<br>
	 * <br>
	 * 入力文字列のyyyymmddhhmmsszzz形式の文字列をyyyymmddで返却します。<br>
	 * <br>
	 * @param target 入力文字列
	 * @return 入力文字列がnullの場合空文字、入力文字列が8桁より大きい場合1〜8桁目、それ以外の場合は入力文字列
	 */
	private String getCkanDigit17to8(String target)
	{
		int digit = 8; // 対象桁数
		String ret_value = ""; // 返却パラメータ
		
		// 入力文字列がnullの場合
		if(null == target)
		{
			return ret_value;
		}
		// 入力文字列が8桁より大きい場合
		else if(digit < target.length())
		{
			ret_value = target.substring(0, 8);
		}
		// それ以外の場合
		else
		{
			ret_value = target;
		}
		return ret_value;
	}
//OM-2016-0000597 ADD END 2016/03/23
}
