/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKHyojyukojihiCPChkListChk
*	ソースファイル名	：JBSbatKKHyojyukojihiCPChkListChk.java
*	作成者				：FJ)中原
*	作成日				：2021年04月16日
*＜機能概要＞
*　標準工事費ＣＰチェックリストチェックです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v53.00.00	2021/04/16	FJ)中原		【ANK-3951-00-00】「競争ルールの検証に関するWG」に関するシステム対応
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM918;
import eo.business.util.file.JBSbatKKLST12501;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.common.constant.JACStrConst;
import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* 標準工事費ＣＰチェックリストチェック部品です。 <p>
*<BR>
* @author FJ
*/
public class JBSbatKKHyojyukojihiCPChkListChk extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** SQL定義キー(KK_SELECT_017)*/
	private static final String ZM_M_WORK_PARAM_KNRI_KK_SELECT_017 = "KK_SELECT_017";

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;

	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 標準工事費ＣＰチェック */
	private static final String KK_KOJIHI_KAP_CHK = "KK_KOJIHI_KAP_CHK_";

	/** キー：インマップネット*/
	private static final String KEY_IN_MAP_NET = "IN_MAP_NET";

	/** キー：インマップ電話*/
	private static final String KEY_IN_MAP_TEL = "IN_MAP_TEL";

	/** キー：インマップテレビ*/
	private static final String KEY_IN_MAP_TV = "IN_MAP_TV";
	

	/**　出力パターン:キー追加*/
	private static final String OUT_PATTERN_ADD = "KEY_ADD";
	
	/**　出力パターン:ファイル出力*/
	private static final String OUT_PATTERN_FILE_OUT = "FILE_OUT";
	
	/**　業務パラメータパターン:正しい工事費支払方法*/
	private static final String RIGHT_KOJIHI_PAY_WAY = "RIGHT_KOJIHI_PAY_WAY";
	
	/**　業務パラメータパターン:正しいキャンペーン*/
	private static final String RIGHT_CAMPAIGN = "RIGHT_CAMPAIGN";
	
	/**　引継データパターン あり:*/
	private static final String PRE_MAP_TRUE = "PRE_MAP_TRUE";
	
	/**　引継データパターン なし:*/
	private static final String PRE_MAP_FALSE = "PRE_MAP_FALSE";
	
	/**　工費費支払方法：分割or一括*/
	private static final String KOUJIHI_PAY_WAY_DOUBLE = "分割or一括";

	/**　工費費支払方法：分割*/
	private static final String KOUJIHI_PAY_WAY_KAP = "分割";

	/**　工費費支払方法：一括*/
	private static final String KOUJIHI_PAY_WAY_ALL = "一括";
	
	/**　工費費支払方法コード：分割or一括*/
	public static final String KOUJIHI_PAY_WAY_CD_DOUBLE = "10";

	/** 標準工事費チェックマップ*/
	private ArrayList<JBSbatCommonDBInterface>  hyoJyuKojihiChkMap = null;


	/**
	 * 初期処理
	 * @param commonItem バッチ共通パラメータ電文
	 * @throws Exception 例外が発生した場合
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		hyoJyuKojihiChkMap = new ArrayList<JBSbatCommonDBInterface>();
		
		// 標準工事費チェックマップを取得
		this.executeZM_M_WORK_PARAM_KNRI_KK_SELECT_017(new Object[]{ KK_KOJIHI_KAP_CHK + "%", super.opeDate , super.opeDate });
		JBSbatCommonDBInterface result = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		if(result != null)
		{
			do
			{
				// 配列に標準工事費チェックマップを格納
				hyoJyuKojihiChkMap. add(result);
				result = db_ZM_M_WORK_PARAM_KNRI.selectNext();
			}
			while(result != null);
		}
		

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @param outputInItem 入力情報
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		// 初回処理
		if ( !outputInItem.isOutMapList_2())
		{
			// データ追加処理
			addDataProc(inMap, outputInItem);

			return outputInItem;
		}

		// INPUTの読み込みが全て終了している場合
		if (null == inMap)
		{
			// 退避リストが空でない場合
			if (outputInItem.isOutMapList_2()) 
			{
				// キーブレーク処理
				keyBreakProc(inMap, outputInItem);
			}
			return outputInItem;
		}
	
		else
		{
			// キーブレークの場合
			if (isKeyBreak(inMap, outputInItem))
			{
				// キーブレーク処理
				keyBreakProc(inMap, outputInItem);
				// データ追加処理
				addDataProc(inMap, outputInItem);
			}
			// キーブレークでない場合
			else
			{
				// データ追加処理
				addDataProc(inMap, outputInItem);
			}

			return outputInItem;
		}

	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception 例外が発生した場合
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_WORK_PARAM_KNRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/

		hyoJyuKojihiChkMap = null;

	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * キーブレークかを判定します。
	 * <br>
	 * @param inMap 入力電文
	 * @param outputInItem 出力情報ワーク
	 * @return 判定結果
	 * @throws Exception キャストで例外が発生した場合
	 */
	private boolean isKeyBreak(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
		// 出力処理(退避.標準工事費チェック対象データリスト)
		JBSbatServiceInterfaceMap preMapNet = getHikitsugiinfo(outputInItem, KEY_IN_MAP_NET);
		JBSbatServiceInterfaceMap preMapTel = getHikitsugiinfo(outputInItem, KEY_IN_MAP_TEL);
		JBSbatServiceInterfaceMap preMapTv = getHikitsugiinfo(outputInItem, KEY_IN_MAP_TV);

		if (preMapNet != null)
		{

			// サービス契約回線内訳番号が変わればキーブレイク
			// 前回の値
			String preValue = JKKStringUtil.nullToBlank(preMapNet.getString(JBSbatKKIFM918.SVC_KEI_KAISEN_UCWK_NO));
			// 現在の値
			String curValue = JKKStringUtil.nullToBlank(inMap.getString(JBSbatKKIFM918.SVC_KEI_KAISEN_UCWK_NO));
			// 値が変わっていればキーブレーク
			if (!preValue.equals(curValue))
			{
				return true;
			}
		}
		else if (preMapTel != null)
		{

			// サービス契約回線内訳番号が変わればキーブレイク
			// 前回の値
			String preValue = JKKStringUtil.nullToBlank(preMapTel.getString(JBSbatKKIFM918.SVC_KEI_KAISEN_UCWK_NO));
			// 現在の値
			String curValue = JKKStringUtil.nullToBlank(inMap.getString(JBSbatKKIFM918.SVC_KEI_KAISEN_UCWK_NO));
			// 値が変わっていればキーブレーク
			if (!preValue.equals(curValue))
			{
				return true;
			}
		}
		else if (preMapTv != null)
		{

			// サービス契約回線内訳番号が変わればキーブレイク
			// 前回の値
			String preValue = JKKStringUtil.nullToBlank(preMapTv.getString(JBSbatKKIFM918.SVC_KEI_KAISEN_UCWK_NO));
			// 現在の値
			String curValue = JKKStringUtil.nullToBlank(inMap.getString(JBSbatKKIFM918.SVC_KEI_KAISEN_UCWK_NO));
			// 値が変わっていればキーブレーク
			if (!preValue.equals(curValue))
			{
				return true;
			}
		}

		return false;
	}

	/**
	 * データ追加処理です。
	 * <br>
	 * @param inMap 入力電文
	 * @param outputInItem 出力情報ワーク
	 * @throws Exception キャストで例外が発生した場合
	 */
	private void addDataProc(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
		JBSbatServiceInterfaceMap outMap = getOutMap(inMap, outputInItem, OUT_PATTERN_ADD);
		if (outMap != null)
		{
			// 引継データはOutMapList_2に設定
			outputInItem.addOutMapList_2(outMap);
		}
	}

	/**
	 * キーブレーク処理です。
	 * <br>
	 * @param inMap 入力電文
	 * @param outputInItem 出力情報ワーク
	 * @throws Exception キャストで例外が発生した場合
	 */
	private void keyBreakProc(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
		// 出力情報を作成
		JBSbatServiceInterfaceMap outMap = getOutMap(inMap, outputInItem, OUT_PATTERN_FILE_OUT);
		// 出力に不要な項目を削除
		List<JBSbatServiceInterfaceMap> tmpList = outputInItem.getOutMapList_2();

		for (int i=0; i < tmpList.size(); i++ )
		{
			if ( tmpList.get(i) != null)
			{
				tmpList.get(i).getMap().remove(KEY_IN_MAP_NET);
				tmpList.get(i).getMap().remove(KEY_IN_MAP_TEL);
				tmpList.get(i).getMap().remove(KEY_IN_MAP_TV);
			}
		}

		// 出力フラグを設定
		if ( outMap != null )
		{
			outMap.setOutFlg(true);
			outputInItem.addOutMapList(outMap);
		}
	}
	
	/**
	 * データ引継設定処理です。
	 * <br>
	 * @param preMap 引継電文
	 * @param PRE_MAP　引継データ有無
	 * @throws Exception キャストで例外が発生した場合
	 */
	private JBSbatServiceInterfaceMap setPreMas(JBSbatServiceInterfaceMap preMap, String PRE_MAP) throws Exception
	{
		// 出力用マップ
		JBSbatServiceInterfaceMap outMap = null;
		outMap = new JBSbatServiceInterfaceMap();
		
		if ( PRE_MAP.equals(PRE_MAP_TRUE))
		{
			/** サービス契約回線内訳番号 */
			outMap.setString(JBSbatKKIFM918.SVC_KEI_KAISEN_UCWK_NO, preMap.getString(JBSbatKKIFM918.SVC_KEI_KAISEN_UCWK_NO));

			/** サービスコード */
			outMap.setString(JBSbatKKIFM918.SVC_CD, preMap.getString(JBSbatKKIFM918.SVC_CD));

			/** サービス契約ステータス */
			outMap.setString(JBSbatKKIFM918.SVC_KEI_STAT, preMap.getString(JBSbatKKIFM918.SVC_KEI_STAT));

			/** サービス契約番号 */
			outMap.setString(JBSbatKKIFM918.SVC_KEI_NO, preMap.getString(JBSbatKKIFM918.SVC_KEI_NO));

			/** 割賦プランコード */
			outMap.setString(JBSbatKKIFM918.KAP_PLAN_CD, preMap.getString(JBSbatKKIFM918.KAP_PLAN_CD));

			/** 割賦販売形態コード */
			outMap.setString(JBSbatKKIFM918.KAP_HAMBAI_FORM_CD, preMap.getString(JBSbatKKIFM918.KAP_HAMBAI_FORM_CD));

			/** 割賦販売形態名 */
			outMap.setString(JBSbatKKIFM918.KAP_HAMBAI_FORM_NM, preMap.getString(JBSbatKKIFM918.KAP_HAMBAI_FORM_NM));

			/** 表示用キャンペーンコード */
			outMap.setString(JBSbatKKIFM918.DSP_CAMPAIGN_CD, preMap.getString(JBSbatKKIFM918.DSP_CAMPAIGN_CD));
		}
		if ( PRE_MAP.equals(PRE_MAP_FALSE))
		{
			/** サービス契約回線内訳番号 */
			outMap.setString(JBSbatKKIFM918.SVC_KEI_KAISEN_UCWK_NO, "");

			/** サービスコード */
			outMap.setString(JBSbatKKIFM918.SVC_CD, "");

			/** サービス契約ステータス */
			outMap.setString(JBSbatKKIFM918.SVC_KEI_STAT, "");

			/** サービス契約番号 */
			outMap.setString(JBSbatKKIFM918.SVC_KEI_NO, "");

			/** 割賦プランコード */
			outMap.setString(JBSbatKKIFM918.KAP_PLAN_CD, "");

			/** 割賦販売形態コード */
			outMap.setString(JBSbatKKIFM918.KAP_HAMBAI_FORM_CD, "");

			/** 割賦販売形態名 */
			outMap.setString(JBSbatKKIFM918.KAP_HAMBAI_FORM_NM, "");

			/** 表示用キャンペーンコード */
			outMap.setString(JBSbatKKIFM918.DSP_CAMPAIGN_CD, "");
		}
		return outMap;
	
	}

	/**
	 * 出力用マップを取得します。
	 * 
	 * @param outputInItem 入力データリスト
	 * @param outputBean 出力リスト
	 * @return 出力用マップ
	 * @throws Exception キャストまたはDBアクセスで例外が発生した場合
	 */
	private JBSbatServiceInterfaceMap getOutMap(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem, String outPattern) throws Exception
	{

		// 出力用マップ
		JBSbatServiceInterfaceMap outMap = null;

		// キーブレイクでは無い場合
		if ( outPattern.equals(OUT_PATTERN_ADD))
		{
			outMap = new JBSbatServiceInterfaceMap();
			// インマップ
			String svcCd = inMap.getString(JBSbatKKIFM918.SVC_CD);
			if (svcCd != null && JKKStrConst.CD00130_01.equals(svcCd))
			{
				outMap.set(KEY_IN_MAP_NET, inMap);
			}
			if (svcCd != null && JKKStrConst.CD00130_02.equals(svcCd))
			{
				outMap.set(KEY_IN_MAP_TEL, inMap);
			}
			if (svcCd != null && JKKStrConst.CD00130_03.equals(svcCd))
			{
				outMap.set(KEY_IN_MAP_TV, inMap);
			}
		}
		
		
		// キーブレイクの場合
		if ( outPattern.equals(OUT_PATTERN_FILE_OUT))
		{
			JBSbatServiceInterfaceMap preMapNet = getHikitsugiinfo(outputInItem, KEY_IN_MAP_NET);
			JBSbatServiceInterfaceMap preMapTel = getHikitsugiinfo(outputInItem, KEY_IN_MAP_TEL);
			JBSbatServiceInterfaceMap preMapTv = getHikitsugiinfo(outputInItem, KEY_IN_MAP_TV);
			JBSbatServiceInterfaceMap checkMapNet = new JBSbatServiceInterfaceMap();
			JBSbatServiceInterfaceMap checMapTel = new JBSbatServiceInterfaceMap();
			JBSbatServiceInterfaceMap checMapTv = new JBSbatServiceInterfaceMap();

			// 標準工事費割賦なしチェック
			if ( preMapNet != null)
			{
				checkMapNet = setPreMas(preMapNet, PRE_MAP_TRUE);
			}
			else
			{
				checkMapNet = setPreMas(preMapNet, PRE_MAP_FALSE);
			}
			if (preMapTel != null )
			{
				checMapTel = setPreMas(preMapTel, PRE_MAP_TRUE);
			}
			else
			{
				checMapTel = setPreMas(preMapTel, PRE_MAP_FALSE);
			}
			if (preMapTv != null)
			{
				checMapTv = setPreMas(preMapTv, PRE_MAP_TRUE);
			}
			else
			{
				checMapTv = setPreMas(preMapTv, PRE_MAP_FALSE);
			}
			if ( "".equals(checkMapNet.getString(JBSbatKKIFM918.KAP_HAMBAI_FORM_CD)) && "".equals(checMapTel.getString(JBSbatKKIFM918.KAP_HAMBAI_FORM_CD)) && "".equals(checMapTv.getString(JBSbatKKIFM918.KAP_HAMBAI_FORM_CD)))
			{
				// 登録済キャンペーン
				String netCampaign = JKKStringUtil.nullToBlank(checkMapNet.getString(JBSbatKKIFM918.DSP_CAMPAIGN_CD));
				String telCampaign = JKKStringUtil.nullToBlank(checMapTel.getString(JBSbatKKIFM918.DSP_CAMPAIGN_CD));
				// 割賦なしなのにキャンペーンがある場合
				if( !"".equals(netCampaign) || !"".equals(telCampaign) )
				{
					outMap = new JBSbatServiceInterfaceMap();
					// ネットお客さまＩＤ
					outMap.setString(JBSbatKKLST12501.NET_SVC_KEI_NO, JKKStringUtil.nullToBlank(checkMapNet.getString(JBSbatKKIFM918.SVC_KEI_NO)));
					// 電話お客さまＩＤ
					outMap.setString(JBSbatKKLST12501.TEL_SVC_KEI_NO, JKKStringUtil.nullToBlank(checMapTel.getString(JBSbatKKIFM918.SVC_KEI_NO)));
					// テレビお客さまＩＤ
					outMap.setString(JBSbatKKLST12501.TV_SVC_KEI_NO, JKKStringUtil.nullToBlank(checMapTv.getString(JBSbatKKIFM918.SVC_KEI_NO)));
	
					// 正工事費支払方法
					String rightKojihiPayWay = getGoumParam(outputInItem, RIGHT_KOJIHI_PAY_WAY);
					outMap.setString(JBSbatKKLST12501.RIGHT_KOJIHI_PAY_WAY, rightKojihiPayWay);
					// 登録済工事費支払方法
					outMap.setString(JBSbatKKLST12501.ADD_ZUMI_KOJIHI_PAY_WAY, "");
					// 正キャンペーン
					String rightCampaign = getGoumParam(outputInItem, RIGHT_CAMPAIGN);
					outMap.setString(JBSbatKKLST12501.RIGHT_CAMPAIGN_CD, rightCampaign);
	
					// 登録済キャンペーン
					if ( "".equals(netCampaign) && "".equals(telCampaign))
					{
						outMap.setString(JBSbatKKLST12501.ADD_ZUMI_CAMPAIGN_CD, "");
					}
					else if ( !"".equals(netCampaign) && !"".equals(telCampaign))
					{
						String doubleCampaign = netCampaign + "/" + telCampaign;
						outMap.setString(JBSbatKKLST12501.ADD_ZUMI_CAMPAIGN_CD, doubleCampaign);
					}
					else if ( !"".equals(netCampaign) )
					{
						outMap.setString(JBSbatKKLST12501.ADD_ZUMI_CAMPAIGN_CD, netCampaign);
					}
					else
					{
						outMap.setString(JBSbatKKLST12501.ADD_ZUMI_CAMPAIGN_CD, telCampaign);
					}
				}
			}
			// 標準工事費ＣＰチェック
			else
			{
				boolean payWayCheck = false;
				boolean campaignCheck = false;
				boolean campaignDoubleCheck = false;
				// 正工事費支払方法
				String rightKojihiPayWay = getGoumParam(outputInItem, RIGHT_KOJIHI_PAY_WAY);
				// 登録済工事費支払方法
				String addZumiKojihiPayWayNet = JKKStringUtil.nullToBlank(checkMapNet.getString(JBSbatKKIFM918.KAP_HAMBAI_FORM_NM));
				String addZumiKojihiPayWayTel = JKKStringUtil.nullToBlank(checMapTel.getString(JBSbatKKIFM918.KAP_HAMBAI_FORM_NM));
				// 正キャンペーン
				String rightCampaign = getGoumParam(outputInItem, RIGHT_CAMPAIGN);
				// 登録済キャンペーン
				String netCampaign = JKKStringUtil.nullToBlank(checkMapNet.getString(JBSbatKKIFM918.DSP_CAMPAIGN_CD));
				String telCampaign = JKKStringUtil.nullToBlank(checMapTel.getString(JBSbatKKIFM918.DSP_CAMPAIGN_CD));
				String outCampaign = "";
				// キャンペーンコードが２つある場合（出力対象）
				if ( !"".equals(netCampaign) && !"".equals(telCampaign))
				{
					outCampaign = netCampaign + "/" + telCampaign;
				}
				else if ( !"".equals(netCampaign) )
				{
					outCampaign = netCampaign;
					campaignDoubleCheck = true;
				}
				else
				{
					outCampaign = telCampaign;
					campaignDoubleCheck = true;
				}
				// 工事費支払方法のチェック
				String payway[] = rightKojihiPayWay.split("or");
				for (int i =0; i < payway.length; i++)
				{
					if ( addZumiKojihiPayWayNet != null && addZumiKojihiPayWayNet.contains(payway[i]) )
					{
						payWayCheck = true;
					}
					if ( addZumiKojihiPayWayTel != null && addZumiKojihiPayWayTel.contains(payway[i]) )
					{
						payWayCheck = true;
					}
				}
				// キャンペーンのチェック
				if (campaignDoubleCheck == true)
				{
					String campaign[] = rightCampaign.split("/");
					for (int j =0; j < campaign.length; j++)
					{
						if ( outCampaign.contains(campaign[j]) )
						{
							campaignCheck = true;
						}
						// キャンペーンの定義値が"00000000"の場合、データ値は未設定であること
						if ( "00000000".equals(campaign[j]) &&  "".equals(outCampaign) )
						{
							campaignCheck = true;
						}
					}
				}
				
				// ファイル出力処理
				if ( payWayCheck == false || campaignCheck == false || campaignDoubleCheck == false)
				{

					outMap = new JBSbatServiceInterfaceMap();
					// ネットお客さまＩＤ
					outMap.setString(JBSbatKKLST12501.NET_SVC_KEI_NO, JKKStringUtil.nullToBlank(checkMapNet.getString(JBSbatKKIFM918.SVC_KEI_NO)));
					// 電話お客さまＩＤ
					outMap.setString(JBSbatKKLST12501.TEL_SVC_KEI_NO, JKKStringUtil.nullToBlank(checMapTel.getString(JBSbatKKIFM918.SVC_KEI_NO)));
					// テレビお客さまＩＤ
					outMap.setString(JBSbatKKLST12501.TV_SVC_KEI_NO, JKKStringUtil.nullToBlank(checMapTv.getString(JBSbatKKIFM918.SVC_KEI_NO)));
					// 正工事費支払方法
					outMap.setString(JBSbatKKLST12501.RIGHT_KOJIHI_PAY_WAY, rightKojihiPayWay);
					// 登録済工事費支払方法
					// 一括の場合
					if ( addZumiKojihiPayWayNet != null && addZumiKojihiPayWayNet.contains(KOUJIHI_PAY_WAY_ALL) || addZumiKojihiPayWayTel != null && addZumiKojihiPayWayTel.contains(KOUJIHI_PAY_WAY_ALL) )
					{
						outMap.setString(JBSbatKKLST12501.ADD_ZUMI_KOJIHI_PAY_WAY, KOUJIHI_PAY_WAY_ALL);
					}
					// 分割の場合
					else if ( addZumiKojihiPayWayNet != null && addZumiKojihiPayWayNet.contains(KOUJIHI_PAY_WAY_KAP) || addZumiKojihiPayWayTel != null && addZumiKojihiPayWayTel.contains(KOUJIHI_PAY_WAY_KAP) )
					{
						outMap.setString(JBSbatKKLST12501.ADD_ZUMI_KOJIHI_PAY_WAY, KOUJIHI_PAY_WAY_KAP);
					}
					else
					{
						outMap.setString(JBSbatKKLST12501.ADD_ZUMI_KOJIHI_PAY_WAY, "");
					}
					// 正キャンペーン	
					outMap.setString(JBSbatKKLST12501.RIGHT_CAMPAIGN_CD, rightCampaign);
					// 登録済キャンペーン
					outMap.setString(JBSbatKKLST12501.ADD_ZUMI_CAMPAIGN_CD, outCampaign);
				}
			}
		}
		
		return outMap;
	}

	/**
	 * 業務パラメータとデータを比較した結果を出力します。
	 * 
	 * @param outputInItem 入力データリスト
	 * @param outputBean 出力リスト
	 * @return 出力用マップ
	 * @throws Exception キャストまたはDBアクセスで例外が発生した場合
	 */
	private String getGoumParam(JBSbatOutputItem outputInItem, String checkPattern) throws Exception
	{
		String outData = "";
		// 出力用マップ
		JBSbatServiceInterfaceMap preMapNet = getHikitsugiinfo(outputInItem, KEY_IN_MAP_NET);
		JBSbatServiceInterfaceMap preMapTel = getHikitsugiinfo(outputInItem, KEY_IN_MAP_TEL);
		JBSbatServiceInterfaceMap preMapTv = getHikitsugiinfo(outputInItem, KEY_IN_MAP_TV);
		
		
		for(JBSbatCommonDBInterface checkMap : hyoJyuKojihiChkMap)
		{
			String str[] = checkMap.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE).split(JKKBatConst.S_SEP_CAM);
			// マップに値がある場合、"1"を返し、存在しな場合、"0"を返却する
			if( str[0].equals(preMapNet != null ? "1":"0") && str[1].equals(preMapTel != null ? "1":"0") && str[2].equals(preMapTv != null ? "1":"0") )
			{
				if ( checkPattern.equals(RIGHT_KOJIHI_PAY_WAY))
				{
					if ( str[3] != null && str[3].equals(KOUJIHI_PAY_WAY_CD_DOUBLE))
					{
						outData = KOUJIHI_PAY_WAY_DOUBLE;
					}
					else if ( str[3] != null && str[3].equals(JACStrConst.KAP_HAMBAI_FORM_CD_IKT))
					{
						outData = KOUJIHI_PAY_WAY_ALL;
					}
					else
					{
						outData = KOUJIHI_PAY_WAY_KAP;
					}
					break;
				}
				if ( checkPattern.equals(RIGHT_CAMPAIGN))
				{
					outData = str[4];
					break;
				}
			}
		}
		
		return outData;
	}

	/**
	 * 引継情報を取得します。
	 * <br>
	 * @param outputInItem outputInItem
	 * @param 検索キー KEY_MAP
	 * @return 引継情報　JBSbatServiceInterfaceMap
	 * @throws Exception キャストで例外が発生した場合
	 */
	private JBSbatServiceInterfaceMap getHikitsugiinfo(JBSbatOutputItem outputInItem, String keyMap) throws Exception
	{
		// 出力処理(退避.標準工事費チェック対象データリスト)
		List<JBSbatServiceInterfaceMap> tmpList = outputInItem.getOutMapList_2();
		JBSbatServiceInterfaceMap preMap =  null;

		for (int i=0; i < tmpList.size(); i++ )
		{
			if ( tmpList.get(i).get(keyMap) != null)
			{
				preMap =  new JBSbatServiceInterfaceMap();
				preMap = (JBSbatServiceInterfaceMap) tmpList.get(i).get(keyMap);
				break;
			}
		}
		return preMap;
	}
	
	/**
	 * SQLKEY(KK_SELECT_017)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	業務パラメータＩＤ(KK_KOJIHI_KAP_CHK_LIST%)
	 *		 	バッチ運用日付
	 *		 	バッチ運用日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_KK_SELECT_017(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_KK_SELECT_017);
	}


}
