/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKTgWribSvcKeiSyk
*	ソースファイル名	：JBSbatKKTgWribSvcKeiSyk.java
*	作成者				：富士通　
*	作成日				：2013年02月17日
*＜機能概要＞
*　対象割引サービス契約集約部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00.00	2013/02/17   富士通		新規作成
*	v5.00.01	2013/02/25   富士通		IT2-2013-0000216
*	v22.00.00	2015/11/24	FJ)金本		【ANK-2732-00-00】プロジェクト正常化施策 ソースの可読性向上
*	v40.00.00	2019/01/30	FJ)舘山		【ANK-3412-03-00】高速割対応
*	v71.00.00	2024/06/12	FJ)御崎		【ANK-4543-05-00】 NTT卸対応 NTT卸（メアド）に付与した長割をサービス開始の対象とする。
*********************************************************************/
package eo.business.service;

import java.util.HashMap;
import java.util.HashSet;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM385;
import eo.business.util.file.JBSbatKKIFM386;
import eo.common.constant.JKKStrConst;
import eo.common.util.JPCDateUtil;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatCheckUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKTgWribSvcKeiSyk extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	/** 単項目チェック項目マップ */
	private HashMap<String, String> singleChkKmkMap = null;
	
	/** 集約グループ中エラーレコード有無 */
	private boolean hasInvalidMembers = false;
	
	/** 集約レコード編集有無 */
	private boolean isWeavedSykMap = false;
	
	/** 除外ステータスセット(モバイルセット割ネット契約以外) */
	private HashSet<String> outOfScopeStatusSet = null;

	/** 除外ステータスセット(モバイルセット割ネット契約) */
	private HashSet<String> outOfScopeStatusMobileSetNetSet = null;
	
	/** ネット契約料金グループセット */
	private HashSet<String> prcGrpNetSet = null;
	
	/** 電話契約料金グループセット */
	private HashSet<String> prcGrpTelSet = null;

	/** TV契約料金グループセット */
	private HashSet<String> prcGrpTvSet = null;

	/** モバイル契約料金グループセット */
	private HashSet<String> prcGrpMobileSet = null;

	// ++++++++++ v22.00.00 削除開始 ++++++++++
//	/** キャンペーン開始コード(53.長期継続利用割引) */
//	private final String CAMPAIGN_STA_CD_CHOKI_KEIZOKU_RIYOU_WRBK="53";

//	/** キャンペーン開始コード(57.モバイルセット割) */
//	private final String CAMPAIGN_STA_CD_MOBILE_SET_WRBK="57";
	// ++++++++++ v22.00.00 削除終了 ++++++++++

	/** 処理中の割引サービス契約番号格納ストレージ */
	private ThreadLocal<String> currentWribSvcKeiNoStorage=new ThreadLocal<String>();
	
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		// 単項目チェック用Map生成
		singleChkKmkMap = new HashMap<String, String>();
		singleChkKmkMap.put("TXT-KKIFM385-INF1.WRIB_SVC_KEI_NO","割引サービス契約サービス課金開始日判定用ファイル.割引サービス契約番号");
		singleChkKmkMap.put("TXT-KKIFM385-INF1.CAMPAIGN_STA_CD","割引サービス契約サービス課金開始日判定用ファイル.キャンペーン開始コード");
		singleChkKmkMap.put("TXT-KKIFM385-INF1.WRIB_ADD_YMD","割引サービス契約サービス課金開始日判定用ファイル.割引登録年月日");
		singleChkKmkMap.put("TXT-KKIFM385-INF1.WRIB_CHRG_STA_MON_STI_CD","割引サービス契約サービス課金開始日判定用ファイル.割引課金開始月指定コード");
		singleChkKmkMap.put("TXT-KKIFM385-INF1.SVC_KEI_NO","割引サービス契約サービス課金開始日判定用ファイル.サービス契約番号（ＳＶＣ）");
		singleChkKmkMap.put("TXT-KKIFM385-INF1.MSKM_DTL_NO","割引サービス契約サービス課金開始日判定用ファイル.申込明細番号（ＳＶＣ）");
		singleChkKmkMap.put("TXT-KKIFM385-INF1.SVC_KEI_STAT","割引サービス契約サービス課金開始日判定用ファイル.サービス契約ステータス（ＳＶＣ）");
		singleChkKmkMap.put("TXT-KKIFM385-INF1.PRC_GRP_CD","割引サービス契約サービス課金開始日判定用ファイル.料金グループコード（ＳＶＣ）");
		singleChkKmkMap.put("TXT-KKIFM385-INF1.PCRS_CD","割引サービス契約サービス課金開始日判定用ファイル.料金コースコード（ＳＶＣ）");
		singleChkKmkMap.put("TXT-KKIFM385-INF1.PPLAN_CD","割引サービス契約サービス課金開始日判定用ファイル.料金プランコード（ＳＶＣ）");
		
		//除外ステータスセット(モバイルセット割ネット契約以外)設定
		outOfScopeStatusSet=new HashSet<String>();
		outOfScopeStatusSet.add(JKKBatConst.CD_SBT_SVC_KEI_STAT_010);
		outOfScopeStatusSet.add(JKKBatConst.CD_SBT_SVC_KEI_STAT_020);
		outOfScopeStatusSet.add(JKKBatConst.CD_SBT_SVC_KEI_STAT_030);
		outOfScopeStatusSet.add(JKKBatConst.CD_SBT_SVC_KEI_STAT_910);
		outOfScopeStatusSet.add(JKKBatConst.CD_SBT_SVC_KEI_STAT_920);
		
		//除外ステータスセット(モバイルセット割ネット契約)設定
		outOfScopeStatusMobileSetNetSet=new HashSet<String>();
		outOfScopeStatusMobileSetNetSet.add(JKKBatConst.CD_SBT_SVC_KEI_STAT_010);
		outOfScopeStatusMobileSetNetSet.add(JKKBatConst.CD_SBT_SVC_KEI_STAT_910);
		outOfScopeStatusMobileSetNetSet.add(JKKBatConst.CD_SBT_SVC_KEI_STAT_920);

		// ネット契約料金グループセット設定
		prcGrpNetSet = new HashSet<String>();
		prcGrpNetSet.add(JKKStrConst.CD00133_02);
		prcGrpNetSet.add(JKKStrConst.CD00133_03);
		prcGrpNetSet.add(JKKStrConst.CD00133_04);
		
		// 電話契約料金グループセット設定
		prcGrpTelSet = new HashSet<String>();
		prcGrpTelSet.add(JKKStrConst.CD00133_10);
		
		// TV契約料金グループセット設定
		prcGrpTvSet = new HashSet<String>();
		prcGrpTvSet.add(JKKStrConst.CD00133_11);
		prcGrpTvSet.add(JKKStrConst.CD00133_12);
		prcGrpTvSet.add(JKKStrConst.CD00133_13);

		// モバイル契約料金グループセット設定
		prcGrpMobileSet = new HashSet<String>();
		prcGrpMobileSet.add(JKKStrConst.CD00133_07);
		prcGrpMobileSet.add(JKKStrConst.CD00133_08);
		prcGrpMobileSet.add(JKKStrConst.CD00133_09);
		prcGrpMobileSet.add(JKKStrConst.CD00133_16);

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @param outputInItem 入力情報
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
	    // 1件目（退避リストが空のとき）
	    if (!outputInItem.isOutMapList()) {
	    	//集約グループ中エラーレコード有無を初期化
	    	hasInvalidMembers=false;
	    	//集約レコード編集有無を初期化
	    	isWeavedSykMap=false;
		    moveInMapToSykMap(inMap, outputInItem,true);
	        return outputInItem;
	    }

	    // 入力なし（＝最終処理）かつ集約グループ中にエラーレコード無しの場合、
	    // 集計結果を出力して処理を終了する。
	    // 入力なし（＝最終処理）かつ集約グループ中にエラーレコード有りの場合、
	    // 集計結果(リスト中最後尾)を破棄して処理を終了する。
	    if (inMap == null) {
	    	keyBreak(outputInItem);
	    	//集約グループ中エラーレコード有無を初期化
	    	hasInvalidMembers=false;
	    	//集約レコード編集有無を初期化
	    	isWeavedSykMap=false;
	        return outputInItem;
	    }

	    
	    //単項目チェック
	    if(!isSingleCheckKKIFM385_INF1(inMap.getMap(), singleChkKmkMap)){
	    	//単項目チェックエラーの場合は集約グループ中にエラーレコード有りとする。
	    	hasInvalidMembers=true;
			return outputInItem;
	    }

	    String wribSvcKeiNo=inMap.getString(JBSbatKKIFM385.WRIB_SVC_KEI_NO);

	    // キー（入力）の設定。
	    String inKey = wribSvcKeiNo; // キー（マスタ）メイン生成

	    // 出力電文に設定されている内容（集計結果）をもとに、キー（退避）の設定。
	    String tmpWribSvcKeiNo=getLatestSykMap(outputInItem).getString(JBSbatKKIFM386.WRIB_SVC_KEI_NO);
	    String tmpKey = tmpWribSvcKeiNo; // キー（退避）メイン生成

	    // キーが一致
	    if (inKey.equals(tmpKey)) {
	    	//集計電文と入力電文をあわせての編集を実行。
		    moveInMapToSykMap(inMap, outputInItem,false);
	    }else {
		    keyBreak(outputInItem);
	    	//集約グループ中エラーレコード有無を初期化
	    	hasInvalidMembers=false;
	    	//集約レコード編集有無を初期化
	    	isWeavedSykMap=false;
	    	//集計電文(空)と入力電文をあわせての編集を実行。
		    moveInMapToSykMap(inMap, outputInItem,true);
	    }
	    return outputInItem;

	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 集約グループ中にエラーレコード有りまたは集約グループへの転記なしの場合、集計結果(リスト中最後尾)を破棄する。
	 * 集約グループ中にエラーレコード無しかつ集約グループへの転記ありの場合、集計結果を出力対象とする。
	 * @param outputInItem
	 */
	private void keyBreak(JBSbatOutputItem outputInItem) {
		if (hasInvalidMembers||!isWeavedSykMap) {
			int listSize=outputInItem.getOutMapList().size();
			if(listSize==0){
				throw new IllegalArgumentException();
			}
			int index=listSize-1;
		    outputInItem.getOutMapList().remove(index);
		}else{
			getLatestSykMap(outputInItem).setOutFlg(true);
		}
	}

	/**
	 * 最新の集計結果(リスト中最後尾)を取得する。
	 * @param outputInItem
	 * @return
	 */
	private JBSbatServiceInterfaceMap getLatestSykMap(
			JBSbatOutputItem outputInItem) {
		int listSize=outputInItem.getOutMapList().size();
		if(listSize==0){
			throw new IllegalArgumentException();
		}
		int index=listSize-1;
		return (JBSbatServiceInterfaceMap)outputInItem.getOutMapList().get(index);
	}

	/**
	 * 空の枠が設定された集計結果を生成する。
	 * @param outputInItem
	 * @return
	 * @throws Exception 
	 */
	private JBSbatServiceInterfaceMap newSykMap() throws Exception {
		JBSbatServiceInterfaceMap sykMap=new JBSbatServiceInterfaceMap();
		
    	sykMap.setString(JBSbatKKIFM386.WRIB_SVC_KEI_NO, "");
    	sykMap.setString(JBSbatKKIFM386.CAMPAIGN_STA_CD, "");
    	sykMap.setString(JBSbatKKIFM386.WRIB_ADD_YMD, "");
    	sykMap.setString(JBSbatKKIFM386.WRIB_AMNT_SNST_STDARDYMD, "");
    	sykMap.setString(JBSbatKKIFM386.WRIB_CHRG_STA_MON_STI_CD, "");

    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_NO_NET, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_SHOSA_YMD_NET, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_STA_YMD_NET, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_STAYMD_NET, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_ENDYMD_NET, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_STAT_NET, "");
    	sykMap.setString(JBSbatKKIFM386.MSKM_DTL_NO_NET, "");
    	sykMap.setString(JBSbatKKIFM386.PRC_GRP_CD_NET, "");
    	sykMap.setString(JBSbatKKIFM386.PCRS_CD_NET, "");
    	sykMap.setString(JBSbatKKIFM386.PPLAN_CD_NET, "");

    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_NO_TEL, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_SHOSA_YMD_TEL, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_STA_YMD_TEL, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_STAYMD_TEL, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_ENDYMD_TEL, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_STAT_TEL, "");
    	sykMap.setString(JBSbatKKIFM386.MSKM_DTL_NO_TEL, "");
    	sykMap.setString(JBSbatKKIFM386.PRC_GRP_CD_TEL, "");
    	sykMap.setString(JBSbatKKIFM386.PCRS_CD_TEL, "");
    	sykMap.setString(JBSbatKKIFM386.PPLAN_CD_TEL, "");

    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_NO_TV, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_SHOSA_YMD_TV, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_STA_YMD_TV, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_STAYMD_TV, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_ENDYMD_TV, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_STAT_TV, "");
    	sykMap.setString(JBSbatKKIFM386.MSKM_DTL_NO_TV, "");
    	sykMap.setString(JBSbatKKIFM386.PRC_GRP_CD_TV, "");
    	sykMap.setString(JBSbatKKIFM386.PCRS_CD_TV, "");
    	sykMap.setString(JBSbatKKIFM386.PPLAN_CD_TV, "");
    	
    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_NO_MOB, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_SHOSA_YMD_MOB, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_STA_YMD_MOB, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_STAYMD_MOB, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_ENDYMD_MOB, "");
    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_STAT_MOB, "");
    	sykMap.setString(JBSbatKKIFM386.MSKM_DTL_NO_MOB, "");
    	sykMap.setString(JBSbatKKIFM386.PRC_GRP_CD_MOB, "");
    	sykMap.setString(JBSbatKKIFM386.PCRS_CD_MOB, "");
    	sykMap.setString(JBSbatKKIFM386.PPLAN_CD_MOB, "");
// ▽▽▽ ANK-3412-03-00 ADD START
    	// ネットのプラン課金開始日を追加
    	sykMap.setString(JBSbatKKIFM386.PLAN_CHRG_STAYMD_NET, "");
// ▲▲▲ ANK-3412-03-00 ADD END

    	return sykMap;
	}

	/**
	 * 集計電文と入力電文をあわせての編集を実行。
	 * @param inMap
	 * @param outputInItem
	 * @param isNewSykMap 新たな集計電文を生成するか否か
	 * @throws Exception 
	 */
	private void moveInMapToSykMap(JBSbatServiceInterfaceMap inMap,
			JBSbatOutputItem outputInItem,boolean isNewSykMap) throws Exception {

		//単項目チェック
		if(!isSingleCheckKKIFM385_INF1(inMap.getMap(), singleChkKmkMap)){
			//単項目チェックエラーの場合は集約グループ中にエラーレコード有りとする。
			hasInvalidMembers=true;
			return;
		}
		//新たな集計電文を生成する設定であれば新たに集計電文を生成して設定。でなければ集計電文を取得して設定。
		JBSbatServiceInterfaceMap sykMap=(isNewSykMap)?newSykMap():getLatestSykMap(outputInItem);
		// 入力電文より集計電文へ値を設定。（出力フラグはfalse）
		weaveSykMap(sykMap,inMap);
		sykMap.setOutFlg(false);
		//新たな集計電文を生成する設定であれば集計電文を出力電文に設定して返却。
		if(isNewSykMap){
			outputInItem.addOutMapList(sykMap);
		}
	}

	private void weaveSykMap(JBSbatServiceInterfaceMap sykMap,
			JBSbatServiceInterfaceMap inMap) throws Exception {
		
	    String wribSvcKeiNo=inMap.getString(JBSbatKKIFM385.WRIB_SVC_KEI_NO);
	    String campaignStaCd=inMap.getString(JBSbatKKIFM385.CAMPAIGN_STA_CD);
	    String wribAddYmd=inMap.getString(JBSbatKKIFM385.WRIB_ADD_YMD);
	    String wribAmntSnstStdardymd=inMap.getString(JBSbatKKIFM385.WRIB_AMNT_SNST_STDARDYMD);
	    String wribChrgStaMonStiCd=inMap.getString(JBSbatKKIFM385.WRIB_CHRG_STA_MON_STI_CD);
	    String svcKeiNo=inMap.getString(JBSbatKKIFM385.SVC_KEI_NO);
	    String shosaYmd=inMap.getString(JBSbatKKIFM385.SHOSA_YMD);
	    String svcStaYmd=inMap.getString(JBSbatKKIFM385.SVC_STA_YMD);
	    String svcChrgStaymd=inMap.getString(JBSbatKKIFM385.SVC_CHRG_STAYMD);
	    String svcChrgEndymd=inMap.getString(JBSbatKKIFM385.SVC_CHRG_ENDYMD);
	    String mskmDtlNo=inMap.getString(JBSbatKKIFM385.MSKM_DTL_NO);
	    String svcKeiStat=inMap.getString(JBSbatKKIFM385.SVC_KEI_STAT);
	    String prcGrpCd=inMap.getString(JBSbatKKIFM385.PRC_GRP_CD);
	    String pcrsCd=inMap.getString(JBSbatKKIFM385.PCRS_CD);
	    String pplanCd=inMap.getString(JBSbatKKIFM385.PPLAN_CD);
// ▽▽▽ ANK-3412-03-00 ADD START
	    // プラン課金開始日
	    String planChrgStaymdNet = inMap.getString(JBSbatKKIFM385.PLAN_CHRG_STAYMD);
// ▲▲▲ ANK-3412-03-00 ADD END
	    
	    //対象がネット契約かつキャンペーン開始コードが57.モバイルセット割ではなく
	    //かつキャンペーン開始コードが53.長期継続利用割引ではなく
	    //かつステータスが除外ステータスセットに該当しない場合
	    //設定値をチェックして
	    //対応する項目へ単純転記を行う
	 // ++++++++++ v22.00.00 変更開始 ++++++++++
//	    if(prcGrpNetSet.contains(prcGrpCd)&&!CAMPAIGN_STA_CD_MOBILE_SET_WRBK.equals(campaignStaCd)
//	    		&&!CAMPAIGN_STA_CD_CHOKI_KEIZOKU_RIYOU_WRBK.equals(campaignStaCd)&&!outOfScopeStatusSet.contains(svcKeiStat)){
	    if(prcGrpNetSet.contains(prcGrpCd)&&!JBSbatKKConst.CAMPAIGN_STA_CD_SET_WRIB_NET_MBL.equals(campaignStaCd)
	    		&&!JBSbatKKConst.CAMPAIGN_STA_CD_CHOKZUWRI.equals(campaignStaCd)&&!outOfScopeStatusSet.contains(svcKeiStat)){
	 // ++++++++++ v22.00.00 変更終了 ++++++++++
	    	
	    	//全て評価するために||演算子ではなく|演算子を使用する。
	    	if(!isSingleCheck(shosaYmd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス照査年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcStaYmd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス開始年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcChrgStaymd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス課金開始年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcChrgEndymd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス課金終了年月日（ＳＶＣ）")){
	    		hasInvalidMembers=true;
	    		return;
			}
	    
	    	sykMap.setString(JBSbatKKIFM386.WRIB_SVC_KEI_NO, wribSvcKeiNo);
	    	sykMap.setString(JBSbatKKIFM386.CAMPAIGN_STA_CD, campaignStaCd);
	    	sykMap.setString(JBSbatKKIFM386.WRIB_ADD_YMD, wribAddYmd);
	    	sykMap.setString(JBSbatKKIFM386.WRIB_AMNT_SNST_STDARDYMD, "");
	    	sykMap.setString(JBSbatKKIFM386.WRIB_CHRG_STA_MON_STI_CD, wribChrgStaMonStiCd);

	    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_NO_NET, svcKeiNo);
	    	sykMap.setString(JBSbatKKIFM386.SVC_SHOSA_YMD_NET, shosaYmd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_STA_YMD_NET, svcStaYmd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_STAYMD_NET, svcChrgStaymd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_ENDYMD_NET, svcChrgEndymd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_STAT_NET, svcKeiStat);
	    	sykMap.setString(JBSbatKKIFM386.MSKM_DTL_NO_NET, mskmDtlNo);
	    	sykMap.setString(JBSbatKKIFM386.PRC_GRP_CD_NET, prcGrpCd);
	    	sykMap.setString(JBSbatKKIFM386.PCRS_CD_NET, pcrsCd);
	    	sykMap.setString(JBSbatKKIFM386.PPLAN_CD_NET, pplanCd);
// ▽▽▽ ANK-3412-03-00 ADD START
	    	sykMap.setString(JBSbatKKIFM386.PLAN_CHRG_STAYMD_NET, planChrgStaymdNet);
// ▲▲▲ ANK-3412-03-00 ADD END
	    	
	    	isWeavedSykMap=true;
	    }

	    //対象が電話契約かつステータスが除外ステータスセットに該当しない場合
	    //設定値をチェックして
	    //対応する項目へ単純転記を行う
	    if(prcGrpTelSet.contains(prcGrpCd)&&!outOfScopeStatusSet.contains(svcKeiStat)){

	    	//全て評価するために||演算子ではなく|演算子を使用する。
	    	if(!isSingleCheck(shosaYmd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス照査年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcStaYmd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス開始年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcChrgStaymd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス課金開始年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcChrgEndymd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス課金終了年月日（ＳＶＣ）")){
	    		hasInvalidMembers=true;
	    		return;
			}
	    	
	    	sykMap.setString(JBSbatKKIFM386.WRIB_SVC_KEI_NO, wribSvcKeiNo);
	    	sykMap.setString(JBSbatKKIFM386.CAMPAIGN_STA_CD, campaignStaCd);
	    	sykMap.setString(JBSbatKKIFM386.WRIB_ADD_YMD, wribAddYmd);
	    	sykMap.setString(JBSbatKKIFM386.WRIB_AMNT_SNST_STDARDYMD, "");
	    	sykMap.setString(JBSbatKKIFM386.WRIB_CHRG_STA_MON_STI_CD, wribChrgStaMonStiCd);

	    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_NO_TEL, svcKeiNo);
	    	sykMap.setString(JBSbatKKIFM386.SVC_SHOSA_YMD_TEL, shosaYmd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_STA_YMD_TEL, svcStaYmd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_STAYMD_TEL, svcChrgStaymd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_ENDYMD_TEL, svcChrgEndymd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_STAT_TEL, svcKeiStat);
	    	sykMap.setString(JBSbatKKIFM386.MSKM_DTL_NO_TEL, mskmDtlNo);
	    	sykMap.setString(JBSbatKKIFM386.PRC_GRP_CD_TEL, prcGrpCd);
	    	sykMap.setString(JBSbatKKIFM386.PCRS_CD_TEL, pcrsCd);
	    	sykMap.setString(JBSbatKKIFM386.PPLAN_CD_TEL, pplanCd);
	    	
	    	isWeavedSykMap=true;

	    }
		
	    //対象がTV契約かつステータスが除外ステータスセットに該当しない場合
	    //設定値をチェックして
	    //対応する項目へ単純転記を行う
	    if(prcGrpTvSet.contains(prcGrpCd)&&!outOfScopeStatusSet.contains(svcKeiStat)){

	    	//全て評価するために||演算子ではなく|演算子を使用する。
	    	if(!isSingleCheck(shosaYmd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス照査年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcStaYmd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス開始年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcChrgStaymd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス課金開始年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcChrgEndymd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス課金終了年月日（ＳＶＣ）")){
	    		hasInvalidMembers=true;
	    		return;
			}

	    	sykMap.setString(JBSbatKKIFM386.WRIB_SVC_KEI_NO, wribSvcKeiNo);
	    	sykMap.setString(JBSbatKKIFM386.CAMPAIGN_STA_CD, campaignStaCd);
	    	sykMap.setString(JBSbatKKIFM386.WRIB_ADD_YMD, wribAddYmd);
	    	sykMap.setString(JBSbatKKIFM386.WRIB_AMNT_SNST_STDARDYMD, "");
	    	sykMap.setString(JBSbatKKIFM386.WRIB_CHRG_STA_MON_STI_CD, wribChrgStaMonStiCd);

	    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_NO_TV, svcKeiNo);
	    	sykMap.setString(JBSbatKKIFM386.SVC_SHOSA_YMD_TV, shosaYmd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_STA_YMD_TV, svcStaYmd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_STAYMD_TV, svcChrgStaymd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_ENDYMD_TV, svcChrgEndymd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_STAT_TV, svcKeiStat);
	    	sykMap.setString(JBSbatKKIFM386.MSKM_DTL_NO_TV, mskmDtlNo);
	    	sykMap.setString(JBSbatKKIFM386.PRC_GRP_CD_TV, prcGrpCd);
	    	sykMap.setString(JBSbatKKIFM386.PCRS_CD_TV, pcrsCd);
	    	sykMap.setString(JBSbatKKIFM386.PPLAN_CD_TV, pplanCd);
	    	
	    	isWeavedSykMap=true;

	    }

	    //対象がモバイル契約かつステータスが除外ステータスセットに該当しない場合
	    //設定値をチェックして
	    //集計側.サービス課金開始年月日(モバイル)と入力側.サービス課金開始年月日(SVC)を比較し、
	    //集計側.サービス課金開始年月日(モバイル)>入力側.サービス課金開始年月日(SVC)の場合は
	    //対応する項目へ単純転記を行う
	    if(prcGrpMobileSet.contains(prcGrpCd)&&!outOfScopeStatusSet.contains(svcKeiStat)){

	    	//全て評価するために||演算子ではなく|演算子を使用する。
	    	if(!isSingleCheck(shosaYmd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス照査年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcStaYmd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス開始年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcChrgStaymd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス課金開始年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcChrgEndymd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス課金終了年月日（ＳＶＣ）")){
	    		hasInvalidMembers=true;
	    		return;
			}

	    	// ANK-4543-05-00 ADD START
	    	// 長割の場合、割引画面で設定した割引額算定基準年月日を引き継ぐ(改修前：常に""が設定される仕様である為）
	    	String tempWribAmntSnstStdardymd = "";
	    	
	    	//割引画面で設定した割引額算定基準年月日の安全性確認
			//割引額算定基準年月日が空ではなくかつ項目チェックエラーの場合は転記対象としない
			boolean isEmptyWribAmntSnstStdardymd=(null==wribAmntSnstStdardymd)||("".equals(wribAmntSnstStdardymd));
			if(!isEmptyWribAmntSnstStdardymd&&!isSingleCheck(wribAmntSnstStdardymd,"8", "割引サービス契約サービス課金開始日判定用ファイル（集約）.割引額算定基準年月日")){
			} else {
				// 長割である場合のみ割引画面で設定した割引額算定基準年月日
				if(JBSbatKKConst.CAMPAIGN_STA_CD_CHOKZUWRI.equals(campaignStaCd)){
					tempWribAmntSnstStdardymd = wribAmntSnstStdardymd;
				}
			}
	    	// ANK-4543-05-00 ADD END
			
	    	String sykSvcChrgStaymd=sykMap.getString(JBSbatKKIFM386.SVC_CHRG_STAYMD_MOB);
	    	if(sykSvcChrgStaymd==null||sykSvcChrgStaymd.equals("")||JPCDateUtil.subtractDay(sykSvcChrgStaymd,svcChrgStaymd)>0){
		    	sykMap.setString(JBSbatKKIFM386.WRIB_SVC_KEI_NO, wribSvcKeiNo);
		    	sykMap.setString(JBSbatKKIFM386.CAMPAIGN_STA_CD, campaignStaCd);
		    	sykMap.setString(JBSbatKKIFM386.WRIB_ADD_YMD, wribAddYmd);
		    	
	    		// ANK-4543-05-00 MOD START
		    	//sykMap.setString(JBSbatKKIFM386.WRIB_AMNT_SNST_STDARDYMD, "");
		    	sykMap.setString(JBSbatKKIFM386.WRIB_AMNT_SNST_STDARDYMD, tempWribAmntSnstStdardymd);
	    		// ANK-4543-05-00 MOD END
		    	
		    	sykMap.setString(JBSbatKKIFM386.WRIB_CHRG_STA_MON_STI_CD, wribChrgStaMonStiCd);
	
		    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_NO_MOB, svcKeiNo);
		    	sykMap.setString(JBSbatKKIFM386.SVC_SHOSA_YMD_MOB, shosaYmd);
		    	sykMap.setString(JBSbatKKIFM386.SVC_STA_YMD_MOB, svcStaYmd);
		    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_STAYMD_MOB, svcChrgStaymd);
		    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_ENDYMD_MOB, svcChrgEndymd);
		    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_STAT_MOB, svcKeiStat);
		    	sykMap.setString(JBSbatKKIFM386.MSKM_DTL_NO_MOB, mskmDtlNo);
		    	sykMap.setString(JBSbatKKIFM386.PRC_GRP_CD_MOB, prcGrpCd);
		    	sykMap.setString(JBSbatKKIFM386.PCRS_CD_MOB, pcrsCd);
		    	sykMap.setString(JBSbatKKIFM386.PPLAN_CD_MOB, pplanCd);
		    	
		    	isWeavedSykMap=true;

	    	}
	    }
	    
	    
	    //対象がネット契約かつキャンペーン開始コードが57.モバイルセット割かつ
	    //ステータスが除外ステータス(モバイルセット割ネット契約)セットに該当しない場合
	    //設定値をチェックして
	    //対応する項目へ単純転記を行う
	    // ++++++++++ v22.00.00 変更開始 ++++++++++
//	    if(prcGrpNetSet.contains(prcGrpCd)&&CAMPAIGN_STA_CD_MOBILE_SET_WRBK.equals(campaignStaCd)&&!outOfScopeStatusMobileSetNetSet.contains(svcKeiStat)){
	    if(prcGrpNetSet.contains(prcGrpCd)&&JBSbatKKConst.CAMPAIGN_STA_CD_SET_WRIB_NET_MBL.equals(campaignStaCd)&&!outOfScopeStatusMobileSetNetSet.contains(svcKeiStat)){
	    // ++++++++++ v22.00.00 変更終了 ++++++++++
	    	//サービス照査年月日のみチェックする。
	    	if(!isSingleCheck(shosaYmd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス照査年月日（ＳＶＣ）")){
	    		hasInvalidMembers=true;
	    		return;
	    	}
	    	sykMap.setString(JBSbatKKIFM386.WRIB_SVC_KEI_NO, wribSvcKeiNo);
	    	sykMap.setString(JBSbatKKIFM386.CAMPAIGN_STA_CD, campaignStaCd);
	    	sykMap.setString(JBSbatKKIFM386.WRIB_ADD_YMD, wribAddYmd);
	    	sykMap.setString(JBSbatKKIFM386.WRIB_AMNT_SNST_STDARDYMD, "");
	    	sykMap.setString(JBSbatKKIFM386.WRIB_CHRG_STA_MON_STI_CD, wribChrgStaMonStiCd);

	    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_NO_NET, svcKeiNo);
	    	sykMap.setString(JBSbatKKIFM386.SVC_SHOSA_YMD_NET, shosaYmd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_STA_YMD_NET, svcStaYmd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_STAYMD_NET, svcChrgStaymd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_ENDYMD_NET, svcChrgEndymd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_STAT_NET, svcKeiStat);
	    	sykMap.setString(JBSbatKKIFM386.MSKM_DTL_NO_NET, mskmDtlNo);
	    	sykMap.setString(JBSbatKKIFM386.PRC_GRP_CD_NET, prcGrpCd);
	    	sykMap.setString(JBSbatKKIFM386.PCRS_CD_NET, pcrsCd);
	    	sykMap.setString(JBSbatKKIFM386.PPLAN_CD_NET, pplanCd);
	    	
	    	isWeavedSykMap=true;

	    }
	    
	    //対象がネット契約かつキャンペーン開始コードが53.長期継続利用割引かつステータスが除外ステータスセットに該当しない場合
	    //設定値をチェックして
	    //対応する項目へ単純転記を行う
	    // ++++++++++ v22.00.00 変更開始 ++++++++++
//	    if(prcGrpNetSet.contains(prcGrpCd)&&CAMPAIGN_STA_CD_CHOKI_KEIZOKU_RIYOU_WRBK.equals(campaignStaCd)&&!outOfScopeStatusSet.contains(svcKeiStat)){
	    if(prcGrpNetSet.contains(prcGrpCd)&&JBSbatKKConst.CAMPAIGN_STA_CD_CHOKZUWRI.equals(campaignStaCd)&&!outOfScopeStatusSet.contains(svcKeiStat)){
	    // ++++++++++ v22.00.00 変更終了 ++++++++++
	    	
	    	//全て評価するために||演算子ではなく|演算子を使用する。
	    	if(!isSingleCheck(shosaYmd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス照査年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcStaYmd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス開始年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcChrgStaymd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス課金開始年月日（ＳＶＣ）")
    	    	|!isSingleCheck(svcChrgEndymd,"8","割引サービス契約サービス課金開始日判定用ファイル.サービス課金終了年月日（ＳＶＣ）")
    	    	|!isSingleCheck(wribChrgStaMonStiCd,"1","割引サービス契約サービス課金開始日判定用ファイル.割引課金開始月指定コード")
    	    	){
	    		hasInvalidMembers=true;
	    		return;
			}
			//割引額算定基準年月日が空ではなくかつ項目チェックエラーの場合は転記対象としない
			boolean isEmptyWribAmntSnstStdardymd=(null==wribAmntSnstStdardymd)||("".equals(wribAmntSnstStdardymd));
			if(!isEmptyWribAmntSnstStdardymd&&!isSingleCheck(wribAmntSnstStdardymd,"8", "割引サービス契約サービス課金開始日判定用ファイル（集約）.割引額算定基準年月日")){
				return;
			}
	    
	    	sykMap.setString(JBSbatKKIFM386.WRIB_SVC_KEI_NO, wribSvcKeiNo);
	    	sykMap.setString(JBSbatKKIFM386.CAMPAIGN_STA_CD, campaignStaCd);
	    	sykMap.setString(JBSbatKKIFM386.WRIB_ADD_YMD, wribAddYmd);
	    	sykMap.setString(JBSbatKKIFM386.WRIB_AMNT_SNST_STDARDYMD, wribAmntSnstStdardymd);
	    	sykMap.setString(JBSbatKKIFM386.WRIB_CHRG_STA_MON_STI_CD, wribChrgStaMonStiCd);

	    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_NO_NET, svcKeiNo);
	    	sykMap.setString(JBSbatKKIFM386.SVC_SHOSA_YMD_NET, shosaYmd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_STA_YMD_NET, svcStaYmd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_STAYMD_NET, svcChrgStaymd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_CHRG_ENDYMD_NET, svcChrgEndymd);
	    	sykMap.setString(JBSbatKKIFM386.SVC_KEI_STAT_NET, svcKeiStat);
	    	sykMap.setString(JBSbatKKIFM386.MSKM_DTL_NO_NET, mskmDtlNo);
	    	sykMap.setString(JBSbatKKIFM386.PRC_GRP_CD_NET, prcGrpCd);
	    	sykMap.setString(JBSbatKKIFM386.PCRS_CD_NET, pcrsCd);
	    	sykMap.setString(JBSbatKKIFM386.PPLAN_CD_NET, pplanCd);
	    	
	    	isWeavedSykMap=true;
	    }
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 *入力情報（割引サービス契約サービス課金開始日判定用ファイル）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 TXT-KKIFM385-INF1.WRIB_SVC_KEI_NO			割引サービス契約サービス課金開始日判定用ファイル.割引サービス契約番号
	 *			 TXT-KKIFM385-INF1.CAMPAIGN_STA_CD			割引サービス契約サービス課金開始日判定用ファイル.キャンペーン開始コード
	 *			 TXT-KKIFM385-INF1.WRIB_ADD_YMD			割引サービス契約サービス課金開始日判定用ファイル.割引登録年月日
	 *			 TXT-KKIFM385-INF1.SVC_KEI_NO			割引サービス契約サービス課金開始日判定用ファイル.サービス契約番号（ＳＶＣ）
	 *			 TXT-KKIFM385-INF1.MSKM_DTL_NO			割引サービス契約サービス課金開始日判定用ファイル.申込明細番号（ＳＶＣ）
	 *			 TXT-KKIFM385-INF1.SVC_KEI_STAT			割引サービス契約サービス課金開始日判定用ファイル.サービス契約ステータス（ＳＶＣ）
	 *			 TXT-KKIFM385-INF1.PRC_GRP_CD			割引サービス契約サービス課金開始日判定用ファイル.料金グループコード（ＳＶＣ）
	 *			 TXT-KKIFM385-INF1.PCRS_CD			割引サービス契約サービス課金開始日判定用ファイル.料金コースコード（ＳＶＣ）
	 *			 TXT-KKIFM385-INF1.PPLAN_CD			割引サービス契約サービス課金開始日判定用ファイル.料金プランコード（ＳＶＣ）
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	private boolean isSingleCheckKKIFM385_INF1(HashMap rsMap, HashMap itemvalueMap)
	{
	    String wribSvcKeiNo=(String)rsMap.get(JBSbatKKIFM385.WRIB_SVC_KEI_NO);
	    setCurrentWribSvcKeiNo(wribSvcKeiNo);

	    // 単項目チェックを行います
		String strValue = null;

		// 割引サービス契約番号項目チェック
		strValue = (String)rsMap.get("WRIB_SVC_KEI_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.WRIB_SVC_KEI_NO")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "12", "12"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.WRIB_SVC_KEI_NO")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.WRIB_SVC_KEI_NO")+toStringCurrentWribSvcKeiNo()});
			return false;
		}

		// キャンペーン開始コード項目チェック
		strValue = (String)rsMap.get("CAMPAIGN_STA_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.CAMPAIGN_STA_CD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "2", "2"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.CAMPAIGN_STA_CD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.CAMPAIGN_STA_CD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}

		// 割引登録年月日項目チェック
		strValue = (String)rsMap.get("WRIB_ADD_YMD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.WRIB_ADD_YMD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "8", "8"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.WRIB_ADD_YMD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji4"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.WRIB_ADD_YMD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}

		// サービス契約番号（ＳＶＣ）項目チェック
		strValue = (String)rsMap.get("SVC_KEI_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.SVC_KEI_NO")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "10", "10"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.SVC_KEI_NO")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.SVC_KEI_NO")+toStringCurrentWribSvcKeiNo()});
			return false;
		}


		// 申込明細番号（ＳＶＣ）項目チェック
		strValue = (String)rsMap.get("MSKM_DTL_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.MSKM_DTL_NO")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "12", "12"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.MSKM_DTL_NO")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.MSKM_DTL_NO")+toStringCurrentWribSvcKeiNo()});
			return false;
		}

		// サービス契約ステータス（ＳＶＣ）項目チェック
		strValue = (String)rsMap.get("SVC_KEI_STAT");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.SVC_KEI_STAT")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "3", "3"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.SVC_KEI_STAT")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.SVC_KEI_STAT")+toStringCurrentWribSvcKeiNo()});
			return false;
		}

		// 料金グループコード（ＳＶＣ）項目チェック
		strValue = (String)rsMap.get("PRC_GRP_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.PRC_GRP_CD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "2", "2"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.PRC_GRP_CD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.PRC_GRP_CD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}

		// 料金コースコード（ＳＶＣ）項目チェック
		strValue = (String)rsMap.get("PCRS_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.PCRS_CD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "3", "3"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.PCRS_CD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.PCRS_CD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}

		// 料金プランコード（ＳＶＣ）項目チェック
		strValue = (String)rsMap.get("PPLAN_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.PPLAN_CD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "6", "6"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.PPLAN_CD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFM385-INF1.PPLAN_CD")+toStringCurrentWribSvcKeiNo()});
			return false;
		}

		return true;
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	private boolean isRequired(String strValue,String replacement){
		if(strValue == null || "".equals(strValue))
		{
//v5.00.01 2013/02/25 del start ファイル出力判定用のため、エラーログは出力しない
			//commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{replacement+toStringCurrentWribSvcKeiNo()});
//v5.00.01 2013/02/25 del end
			return false;
		}
		return true;
	}

	private boolean isSized(String strValue,String size,String replacement){
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", size, size}))
		{
//v5.00.01 2013/02/25 del start ファイル出力判定用のため、エラーログは出力しない
			//commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{replacement+toStringCurrentWribSvcKeiNo()});
//v5.00.01 2013/02/25 del end
			return false;
		}
		return true;
	}

	private boolean isFormed(String strValue,String replacement){
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
//v5.00.01 2013/02/25 del start ファイル出力判定用のため、エラーログは出力しない
			//commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{replacement+toStringCurrentWribSvcKeiNo()});
//v5.00.01 2013/02/25 del end
			return false;
		}
		return true;
	}
	private boolean isSingleCheck(String strValue,String size,String replacement){
		if(!isRequired(strValue, replacement)||!isSized(strValue, size, replacement)||!isFormed(strValue, replacement))
		{
			return false;
		}
		return true;
	}
	
	private void setCurrentWribSvcKeiNo(String currentWribSvcKeiNo){
		currentWribSvcKeiNoStorage.set(currentWribSvcKeiNo);
	}

	private String toStringCurrentWribSvcKeiNo(){
		String currentWribSvcKeiNo=currentWribSvcKeiNoStorage.get();
		currentWribSvcKeiNo=(currentWribSvcKeiNo==null)?"":currentWribSvcKeiNo;
		
		return "(割引サービス契約番号:"+currentWribSvcKeiNo+")";
	}
}
