/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKNippouDataShuk
*	ソースファイル名	：JBSbatKKNippouDataShuk.java
*	作成者				：富士通　
*	作成日				：2012年06月04日
*＜機能概要＞
*　日報データ集計部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/06/04   富士通		新規作成
*	v4.00.00	2012/12/29   FJ)三浦    【ST4-2012-0000304】SQL性能改善
*	v7.00.00	2014/01/14   FJ)北浦    【ANK-1873-00-00】KC社追加対応
*********************************************************************/
package eo.business.service;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKNippouDataShuk extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** テーブル(申込日別申込数集計結果)*/
	private static final String D_TBL_NAME_KK_T_MDBT_MKC_SRLT = "KK_T_MDBT_MKC_SRLT";

	/** テーブル(申込)*/
	private static final String D_TBL_NAME_KK_T_MSKM = "KK_T_MSKM";

	/** SQL定義キー(KK_SELECT_003)*/
	private static final String ZM_M_WORK_PARAM_KNRI_KK_SELECT_003 = "KK_SELECT_003";

	/** SQL定義キー(KK_DELETE_001)*/
	private static final String KK_T_MDBT_MKC_SRLT_KK_DELETE_001 = "KK_DELETE_001";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String KK_T_MDBT_MKC_SRLT_KK_SELECT_001 = "KK_SELECT_001";

	/** SQL定義キー(KK_SELECT_007)*/
	private static final String KK_T_MSKM_KK_SELECT_007 = "KK_SELECT_007";

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;

	/** テーブルアクセスクラス(申込日別申込数集計結果)*/
	private JBSbatSQLAccess db_KK_T_MDBT_MKC_SRLT = null;

	/** テーブルアクセスクラス(申込)*/
	private JBSbatSQLAccess db_KK_T_MSKM = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 業務パラメータＩＤ（Ｍ社）**/
	private static final String TRAT_MSHA = "KK_TRAT_MSYA";
	/** 業務パラメータＩＤ（I社）**/
	private static final String TRAT_ISHA = "KK_TRAT_ISYA";
	/** 業務パラメータＩＤ（T社）**/
	private static final String TRAT_TSHA = "KK_TRAT_TSYA";
	/** 業務パラメータＩＤ（B社）**/
	private static final String TRAT_BSHA = "KK_TRAT_BSYA";
	/** 業務パラメータＩＤ（K社）**/
	private static final String TRAT_KSHA = "KK_TRAT_KSYA";
	/** 業務パラメータＩＤ（KC社）**/
	private static final String TRAT_KCSHA = "KK_TRAT_KCSYA";	
	
	/** 業務パラメータＩＤ 申込実績集計結果削除日数 **/
	private static final String SRLT_DEL_NISU = "KK_SRLT_DEL_NISU";

	/** 業務パラメータＩＤ WEB仮申込用の代理店用集計項目コード **/
	private static final String WEB_KR_SHUK_CD = "KK_WEB_KR_SHUK_CD";
	/** 業務パラメータＩＤ 量販仮申込用の代理店用集計項目コード **/
	private static final String RH_KR_SHUK_CD = "KK_RH_KR_SHUK_CD";
	/** 業務パラメータＩＤ 訪販仮申込用の代理店用集計項目コード **/
	private static final String VH_KR_SHUK_CD = "KK_VH_KR_SHUK_CD";
	/** 業務パラメータＩＤ 客サ仮申込用の代理店用集計項目コード **/
	private static final String CUST_KR_SHUK_CD = "KK_CUST_KR_SHUK_CD";
	
	/**集計契機コード**/
	private String sktgwOptntyCd = "";
	
	/**業務パラメータ設定値（Ｍ社）**/
	private String workParamM = "";
	/**業務パラメータ設定値（I社）**/
	private String workParamI = "";
	/**業務パラメータ設定値（T社）**/
	private String workParamT = "";
	/**業務パラメータ設定値（B社）**/
	private String workParamB = "";
	/**業務パラメータ設定値（K社）**/
	private String workParamK = "";
	/**業務パラメータ設定値（KC社）**/
	private String workParamKC = "";
	
	/** 業務パラメータ設定値 申込実績集計結果削除日数 **/
	private String workParamSrltDelNisu = "";
	
	/** 業務パラメータ設定値 WEB仮申込用の代理店用集計項目コード **/
	private String workParamWebKrShukCd = "";
	/** 業務パラメータ設定値 量販仮申込用の代理店用集計項目コード **/
	private String workParamRhKrShukCd = "";
	/** 業務パラメータ設定値 訪販仮申込用の代理店用集計項目コード **/
	private String workParamVhKrShukCd = "";
	/** 業務パラメータ設定値 客サ仮申込用の代理店用集計項目コード **/
	private String workParamCustKrShukCd = "";
	
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem 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);
		db_KK_T_MDBT_MKC_SRLT = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MDBT_MKC_SRLT);
		db_KK_T_MSKM = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
		
		//運用日付の取得
		String opeDate =  commonItem.getOpeDate();
		
		sktgwOptntyCd = commonItem.getFreeItem();
		
		if(!"0".equals(sktgwOptntyCd) && !"1".equals(sktgwOptntyCd))
		{
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0130CE, new String[] {
					"集計契機コード:" + sktgwOptntyCd });
		}
		
		//業務パラメータ取得（Ｍ社）
		List<JBSbatCommonDBInterface> workParamMsyaList =  getTargetParamList(TRAT_MSHA, opeDate);
		
		if(workParamMsyaList.isEmpty())
		{
			// パラメータが不正です。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + TRAT_MSHA });
		}
		
		workParamM = workParamMsyaList.get(0).getString("WORK_PARAM_SETTE_VALUE");
		if(workParamM == null)
		{
			// 業務パラメータから取得コード(M社)が取得できなければ、例外をthrowする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + TRAT_MSHA, null});
		}
		
		//業務パラメータ取得（I社）
		List<JBSbatCommonDBInterface> workParamIsyaList =  getTargetParamList(TRAT_ISHA, opeDate);
		
		if(workParamIsyaList.isEmpty())
		{
			// パラメータが不正です。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + TRAT_ISHA});
		}
		
		workParamI = workParamIsyaList.get(0).getString("WORK_PARAM_SETTE_VALUE");
		if(workParamI == null)
		{
			// 業務パラメータから取得コード(I社)が取得できなければ、例外をthrowする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + TRAT_ISHA, null});
		}
		
		//業務パラメータ取得（T社）
		List<JBSbatCommonDBInterface> workParamTsyaList =  getTargetParamList(TRAT_TSHA, opeDate);
		
		if(workParamTsyaList.isEmpty())
		{
			// パラメータが不正です。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + TRAT_TSHA });
		}
		
		workParamT = workParamTsyaList.get(0).getString("WORK_PARAM_SETTE_VALUE");
		if(workParamT == null)
		{
			// 業務パラメータから取得コード(T社)が取得できなければ、例外をthrowする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + TRAT_TSHA, null});
		}
		
		//業務パラメータ取得（B社）
		List<JBSbatCommonDBInterface> workParamBsyaList =  getTargetParamList(TRAT_BSHA, opeDate);
		
		if(workParamBsyaList.isEmpty())
		{
			// パラメータが不正です。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + TRAT_BSHA });
		}
		
		workParamB = workParamBsyaList.get(0).getString("WORK_PARAM_SETTE_VALUE");
		if(workParamB == null)
		{
			// 業務パラメータから取得コード(B社)が取得できなければ、例外をthrowする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + TRAT_BSHA, null});
		}
		
		//業務パラメータ取得（K社）
		List<JBSbatCommonDBInterface> workParamKsyaList =  getTargetParamList(TRAT_KSHA, opeDate);
		
		if(workParamKsyaList.isEmpty())
		{
			// パラメータが不正です。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + TRAT_KSHA });
		}
		
		workParamK = workParamKsyaList.get(0).getString("WORK_PARAM_SETTE_VALUE");
		if(workParamK == null)
		{
			// 業務パラメータから取得コード(K社)が取得できなければ、例外をthrowする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + TRAT_KSHA, null});
		}
		
		//業務パラメータ取得（KC社）
		List<JBSbatCommonDBInterface> workParamKCsyaList =  getTargetParamList(TRAT_KCSHA, opeDate);
		
		if(workParamKCsyaList.isEmpty())
		{
			// パラメータが不正です。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + TRAT_KCSHA });
		}
		
		workParamKC = workParamKCsyaList.get(0).getString("WORK_PARAM_SETTE_VALUE");
		if(workParamKC == null)
		{
			// 業務パラメータから取得コード(KC社)が取得できなければ、例外をthrowする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + TRAT_KCSHA, null});
		}		
		
		//業務パラメータ取得　申込実績集計結果削除日数
		List<JBSbatCommonDBInterface> workParamSrltDelNisuList =  getTargetParamList(SRLT_DEL_NISU, opeDate);
		
		if(workParamSrltDelNisuList.isEmpty())
		{
			// パラメータが不正です。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + SRLT_DEL_NISU });
		}
		
		workParamSrltDelNisu = workParamSrltDelNisuList.get(0).getString("WORK_PARAM_SETTE_VALUE");
		
		if(workParamSrltDelNisu == null)
		{
			// 業務パラメータから日報電子ファイル削除日数が取得できなければ、例外をthrowする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + SRLT_DEL_NISU, null});
		}
		else
		{
			try
			{
				int	check = Integer.valueOf(workParamSrltDelNisu);
			}
			catch (NumberFormatException e)
			{
				// パラメータが不正です。
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0130CE, new String[] {
						"業務パラメータ.業務パラメータＩＤ：" + SRLT_DEL_NISU + ":" + workParamSrltDelNisu});
			}
		}

		//業務パラメータ取得　WEB仮申込用の代理店用集計項目コード
		List<JBSbatCommonDBInterface> workParamWebKrShukCdList =  getTargetParamList(WEB_KR_SHUK_CD, opeDate);
		
		if(workParamWebKrShukCdList.isEmpty())
		{
			// パラメータが不正です。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + WEB_KR_SHUK_CD });
		}
		
		workParamWebKrShukCd = workParamWebKrShukCdList.get(0).getString("WORK_PARAM_SETTE_VALUE");
		
		if(workParamWebKrShukCd == null)
		{
			// 業務パラメータからWEB仮申込用の代理店用集計項目コードが取得できなければ、例外をthrowする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + WEB_KR_SHUK_CD, null});
		}
		
		//業務パラメータ取得　量販仮申込用の代理店用集計項目コード
		List<JBSbatCommonDBInterface> workParamRhKrShukCdList =  getTargetParamList(RH_KR_SHUK_CD, opeDate);
		
		if(workParamRhKrShukCdList.isEmpty())
		{
			// パラメータが不正です。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + RH_KR_SHUK_CD });
		}
		
		workParamRhKrShukCd = workParamRhKrShukCdList.get(0).getString("WORK_PARAM_SETTE_VALUE");
		if(workParamRhKrShukCd == null)
		{
			// 業務パラメータから量販仮申込用の代理店用集計項目コードが取得できなければ、例外をthrowする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + RH_KR_SHUK_CD, null});
		}
		
		//業務パラメータ取得　訪販仮申込用の代理店用集計項目コード
		List<JBSbatCommonDBInterface> workParamVhKrShukCdList =  getTargetParamList(VH_KR_SHUK_CD, opeDate);
		
		if(workParamVhKrShukCdList.isEmpty())
		{
			// パラメータが不正です。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + VH_KR_SHUK_CD });
		}
		
		workParamVhKrShukCd = workParamVhKrShukCdList.get(0).getString("WORK_PARAM_SETTE_VALUE");
		if(workParamVhKrShukCd == null)
		{
			// 業務パラメータから訪販仮申込用の代理店用集計項目コードが取得できなければ、例外をthrowする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + VH_KR_SHUK_CD, null});
		}
		
		//業務パラメータ取得　客サ仮申込用の代理店用集計項目コード
		List<JBSbatCommonDBInterface> workParamCustKrShukCdList =  getTargetParamList(CUST_KR_SHUK_CD, opeDate);
		
		if(workParamCustKrShukCdList.isEmpty())
		{
			// パラメータが不正です。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + CUST_KR_SHUK_CD });
		}
		
		workParamCustKrShukCd = workParamCustKrShukCdList.get(0).getString("WORK_PARAM_SETTE_VALUE");
		if(workParamCustKrShukCd == null)
		{
			// 業務パラメータから客サ仮申込用の代理店用集計項目コードが取得できなければ、例外をthrowする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
					"業務パラメータ", "業務パラメータＩＤ：" + CUST_KR_SHUK_CD, null});
		}
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		
		String opeDate =  commonItem.getOpeDate();
				
		// 日報データ削除
		delMdbtMkcSrlt();
		
		//最終確定年月日の取得
		List<JBSbatCommonDBInterface> ymdList =  getLastFixYmd();
		
		//最終確定年月日
		String lastFixYmd = ymdList.get(0).getString("MAX_MSKM_YMD");
		
		// 最終確定年月日が取得できない場合
		if (lastFixYmd == null)
		{
			// バッチ運用日付より -1日を設定する
			Calendar	cal = Calendar.getInstance();
			cal.set(new Integer(opeDate.substring(0, 4)).intValue(), new Integer(opeDate.substring(4, 6)).intValue() - 1,
					new Integer(opeDate.substring(6, 8)).intValue());
			
			cal.add(Calendar.DAY_OF_YEAR, -1);
			
			SimpleDateFormat sdfl = new SimpleDateFormat("yyyyMMdd");
			
			lastFixYmd = sdfl.format(cal.getTime());
		}
		
		
		//日報データ集計
		List<JBSbatCommonDBInterface> dataShukList = getDataShuk(opeDate, lastFixYmd);
		
		for(JBSbatCommonDBInterface addMap : dataShukList)
		{
			addMdbtMkcSrlt(addMap);
		}
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_WORK_PARAM_KNRI.close();
		db_KK_T_MDBT_MKC_SRLT.close();
		db_KK_T_MSKM.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	業務パラメータID
	 *		 	運用日付
	 *		 	運用日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_KK_SELECT_003(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_003);
	}

	/**
	 * SQLKEY(KK_DELETE_001)で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_MDBT_MKC_SRLT_KK_DELETE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_MDBT_MKC_SRLT.executeBySqlDefine(paramList, KK_T_MDBT_MKC_SRLT_KK_DELETE_001);
	}

	/**
	 * SQLKEY(KK_SELECT_001)で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_MDBT_MKC_SRLT_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		// DBアクセスを実行します
		db_KK_T_MDBT_MKC_SRLT.selectBySqlDefine(paramList, KK_T_MDBT_MKC_SRLT_KK_SELECT_001);
	}

	/**
	 * SQLKEY(KK_SELECT_007)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	最終確定日
	 *		 	バッチ運用日
	 *		 	バッチ運用日
	 *		 	取扱コード(M社)
	 *		 	取扱コード(I社)
	 *		 	取扱コード(KC社)
	 *		 	取扱コード(T社)
	 *		 	取扱コード(B社)
	 *		 	取扱コード(K社)
	 *		 	取扱コード(M社)
	 *		 	取扱コード(I社)
	 *		 	取扱コード(KC社)
	 *		 	取扱コード(T社)
	 *		 	取扱コード(B社)
	 *		 	取扱コード(K社)
	 *		 	取扱コード(M社)
	 *		 	取扱コード(I社)
	 *		 	取扱コード(KC社)
	 *		 	取扱コード(T社)
	 *		 	取扱コード(B社)
	 *		 	取扱コード(K社)
	 *		 	最終確定日
	 *		 	バッチ運用日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_KK_SELECT_007(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());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
		paramList.setValue(param[9].toString());
		paramList.setValue(param[10].toString());
		paramList.setValue(param[11].toString());
		paramList.setValue(param[12].toString());
		paramList.setValue(param[13].toString());
		paramList.setValue(param[14].toString());
		paramList.setValue(param[15].toString());
		paramList.setValue(param[16].toString());
		paramList.setValue(param[17].toString());
		paramList.setValue(param[18].toString());
		paramList.setValue(param[19].toString());
		paramList.setValue(param[20].toString());
		paramList.setValue(param[21].toString());
		paramList.setValue(param[22].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM.selectBySqlDefine(paramList, KK_T_MSKM_KK_SELECT_007);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	集計対象申込年月日				SHUK_TG_MSKM_YMD
	 *		 	代理店種別コード				AGNT_SBT_CD
	 *		 	サービスタイプ識別コード				SVC_TYPE_SKBT_CD
	 *		 	紹介キャンペーンフラグ				INTR_CMP_FLG
	 *		 	代理店用集計項目コード				AGNT_SHUK_KMK_CD
	 *		 	申込形態コード				MSKM_FORM_CD
	 *		 	仮申込フラグ				KARI_MSKM_FLG
	 *		 	申込者数				MSKMSHA_CNT
	 *		 	申込者数（ネット）				MSKMSHA_CNT_NET
	 *		 	申込者数（電話）				MSKMSHA_CNT_TEL
	 *		 	申込者数（テレビ）				MSKMSHA_CNT_TV
	 *		 	申込者数（モバイル）				MSKMSHA_CNT_MOBILE
	 *		 	申込件数（ネット）				MSKM_CNT_NET
	 *		 	申込件数（ネット電話）				MSKM_CNT_NET_TEL
	 *		 	申込件数（３点セット）				MSKM_CNT_3T_SET
	 *		 	申込件数（ネットテレビ）				MSKM_CNT_NET_TV
	 *		 	申込件数（電話）				MSKM_CNT_TEL
	 *		 	申込件数（テレビ）				MSKM_CNT_TV
	 *		 	申込件数（テレビ電話）				MSKM_CNT_TV_TEL
	 *		 	申込件数（ネットモバイル）				MSKM_CNT_NET_MBL
	 *		 	申込件数（ネット電話モバイル）				MSKM_CNT_NET_TEL_MBL
	 *		 	申込件数（４点セット）				MSKM_CNT_4T_SET
	 *		 	申込件数（ネットテレビモバイル）				MSKM_CNT_NET_TV_MBL
	 *		 	申込件数（電話モバイル）				MSKM_CNT_TEL_MBL
	 *		 	申込件数（テレビモバイル）				MSKM_CNT_TV_MBL
	 *		 	申込件数（テレビ電話モバイル）				MSKM_CNT_TV_TEL_MBL
	 *		 	申込件数（モバイル）				MSKM_CNT_MBL
	 *		 	申込件数（テレビ同時）				MSKM_CNT_TV_DOJI
	 *		 	申込件数（テレビ追加）				MSKM_CNT_TV_ADD
	 *		 	申込件数（テレビ単独）				MSKM_CNT_TV_SNGL
	 *		 	申込件数（モバイル同時）				MSKM_CNT_MBL_DOJI
	 *		 	申込件数（モバイル追加）				MSKM_CNT_MBL_ADD
	 *		 	申込件数（モバイル単独）				MSKM_CNT_MBL_SNGL
	 *		 	集計契機コード				SHUK_OPTNTY_CD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MDBT_MKC_SRLT_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("SHUK_TG_MSKM_YMD", setParam[0]);
		setMap.setValue("AGNT_SBT_CD", setParam[1]);
		setMap.setValue("SVC_TYPE_SKBT_CD", setParam[2]);
		setMap.setValue("INTR_CMP_FLG", setParam[3]);
		setMap.setValue("AGNT_SHUK_KMK_CD", setParam[4]);
		setMap.setValue("MSKM_FORM_CD", setParam[5]);
		setMap.setValue("KARI_MSKM_FLG", setParam[6]);
		setMap.setValue("MSKMSHA_CNT", setParam[7]);
		setMap.setValue("MSKMSHA_CNT_NET", setParam[8]);
		setMap.setValue("MSKMSHA_CNT_TEL", setParam[9]);
		setMap.setValue("MSKMSHA_CNT_TV", setParam[10]);
		setMap.setValue("MSKMSHA_CNT_MOBILE", setParam[11]);
		setMap.setValue("MSKM_CNT_NET", setParam[12]);
		setMap.setValue("MSKM_CNT_NET_TEL", setParam[13]);
		setMap.setValue("MSKM_CNT_3T_SET", setParam[14]);
		setMap.setValue("MSKM_CNT_NET_TV", setParam[15]);
		setMap.setValue("MSKM_CNT_TEL", setParam[16]);
		setMap.setValue("MSKM_CNT_TV", setParam[17]);
		setMap.setValue("MSKM_CNT_TV_TEL", setParam[18]);
		setMap.setValue("MSKM_CNT_NET_MBL", setParam[19]);
		setMap.setValue("MSKM_CNT_NET_TEL_MBL", setParam[20]);
		setMap.setValue("MSKM_CNT_4T_SET", setParam[21]);
		setMap.setValue("MSKM_CNT_NET_TV_MBL", setParam[22]);
		setMap.setValue("MSKM_CNT_TEL_MBL", setParam[23]);
		setMap.setValue("MSKM_CNT_TV_MBL", setParam[24]);
		setMap.setValue("MSKM_CNT_TV_TEL_MBL", setParam[25]);
		setMap.setValue("MSKM_CNT_MBL", setParam[26]);
		setMap.setValue("MSKM_CNT_TV_DOJI", setParam[27]);
		setMap.setValue("MSKM_CNT_TV_ADD", setParam[28]);
		setMap.setValue("MSKM_CNT_TV_SNGL", setParam[29]);
		setMap.setValue("MSKM_CNT_MBL_DOJI", setParam[30]);
		setMap.setValue("MSKM_CNT_MBL_ADD", setParam[31]);
		setMap.setValue("MSKM_CNT_MBL_SNGL", setParam[32]);
		setMap.setValue("SHUK_OPTNTY_CD", setParam[33]);
		setMap.setValue("ADD_DTM", setParam[34]);
		setMap.setValue("ADD_OPEACNT", setParam[35]);
		setMap.setValue("UPD_DTM", setParam[36]);
		setMap.setValue("UPD_OPEACNT", setParam[37]);
		setMap.setValue("DEL_DTM", setParam[38]);
		setMap.setValue("DEL_OPEACNT", setParam[39]);
		setMap.setValue("MK_FLG", setParam[40]);
		setMap.setValue("ADD_UNYO_YMD", setParam[41]);
		setMap.setValue("ADD_TRN_ID", setParam[42]);
		setMap.setValue("UPD_UNYO_YMD", setParam[43]);
		setMap.setValue("UPD_TRN_ID", setParam[44]);
		setMap.setValue("DEL_UNYO_YMD", setParam[45]);
		setMap.setValue("DEL_TRN_ID", setParam[46]);
	
		// DBアクセスを実行します
		db_KK_T_MDBT_MKC_SRLT.insertByPrimaryKeys(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 業務パラメータ取得処理
	 * @param workParamCd
	 * @param opeDate
	 * @throws Exception 
	 * @return selectList
	 */
	private List<JBSbatCommonDBInterface> getTargetParamList(String workParamCd, String opeDate) throws Exception
	{
		List<JBSbatCommonDBInterface> selectList = new ArrayList<JBSbatCommonDBInterface>();
		Object[] param = {workParamCd, opeDate, opeDate};
		executeZM_M_WORK_PARAM_KNRI_KK_SELECT_003(param);
		
		JBSbatCommonDBInterface selectMap = new JBSbatCommonDBInterface();
		
		while(true)
		{
			selectMap = db_ZM_M_WORK_PARAM_KNRI.selectNext();
			if(selectMap != null)
			{
				selectList.add(selectMap);
			}
			else
			{
				break;
			}
		}
		
		return selectList;
	}
	
	/**
	 * 申込日別申込数集計結果削除処理
	 * @throws Exception 
	 * 
	 */
	private void delMdbtMkcSrlt() throws Exception
	{
		Object[] param = {this.opeDate, workParamSrltDelNisu};
		executeKK_T_MDBT_MKC_SRLT_KK_DELETE_001(param);
	}
	
	/**
	 * 申込日別申込数集計結果最終確定年月日取得
	 * @return selectMap
	 * @throws Exception
	 */
	private List<JBSbatCommonDBInterface> getLastFixYmd() throws Exception
	{
		List<JBSbatCommonDBInterface> selectList = new ArrayList<JBSbatCommonDBInterface>();
		Object[] param = {};
		executeKK_T_MDBT_MKC_SRLT_KK_SELECT_001(param);
		
		JBSbatCommonDBInterface selectMap = new JBSbatCommonDBInterface();
		
		while(true)
		{
			selectMap = db_KK_T_MDBT_MKC_SRLT.selectNext();
			if(selectMap != null)
			{
				selectList.add(selectMap);
			}
			else
			{
				break;
			}
		}

		return selectList;
	}
	
	/**
	 * 日報データ集計
	 * @param opeDate
	 * @param lastFixYmd
	 * @return selectList
	 * @throws Exception
	 */
	private List<JBSbatCommonDBInterface> getDataShuk(String opeDate, String lastFixYmd) throws Exception
	{
		
		List<JBSbatCommonDBInterface> selectList = new ArrayList<JBSbatCommonDBInterface>();
		Object[] param = {lastFixYmd, opeDate, opeDate, workParamM, workParamI, workParamKC, workParamT, workParamB, workParamK,
				workParamM, workParamI, workParamKC, workParamT, workParamB, workParamK,
				workParamM, workParamI, workParamKC, workParamT, workParamB, workParamK,lastFixYmd, opeDate};
		
		JBSbatCommonDBInterface selectMap = new JBSbatCommonDBInterface();
		executeKK_T_MSKM_KK_SELECT_007(param);
		
		while(true)
		{
			selectMap = db_KK_T_MSKM.selectNext();
			
			if(selectMap != null)
			{
				selectList.add(selectMap);
			}
			else 
			{
				break;
			}
		}
		return selectList;
		
	}
	
	/**
	 * 日報データ集計（登録）
	 * @param setParamMap
	 * @throws Exception
	 */
	private void addMdbtMkcSrlt(JBSbatCommonDBInterface setParamMap) throws Exception
	{
		String kariMskmFlg = "";
		//仮申込フラグがnullの場合、0を設定
		if(setParamMap.getString("KARI_MSKM_FLG") == null || "".equals(setParamMap.getString("KARI_MSKM_FLG")))
		{
			kariMskmFlg = "0";
		}
		else
		{
			kariMskmFlg = setParamMap.getString("KARI_MSKM_FLG");
		}
		
		
		
		Object[] param = 
		{
				setParamMap.getString("MSKM_NYO_SHONIN_YMD"),				//集計対象申込年月日
				setParamMap.getString("AGNT_SBT_CD"),						//代理店種別コード
				setParamMap.getString("MSKM_SYO_SBT_CD"),					//サービスタイプ識別コード
				setParamMap.getString("INTR_CMP_FLG"),						//紹介キャンペーンフラグ
				getAgntShukKmkCd(setParamMap),								//代理店用集計項目コード
				setParamMap.getString("MSKM_FORM_CD"),						//申込形態コード
				kariMskmFlg,												//仮申込フラグ
				setParamMap.getString("MSKM_CNT"),							//申込者数
				setParamMap.getString("EOHNT_MSKMSHA_CNT"),					//申込者数（ネット）
				setParamMap.getString("EOHTL_MSKMSHA_CNT"),					//申込者数（電話）
				setParamMap.getString("EOHTV_MSKMSHA_CNT"),					//申込者数（テレビ）
				setParamMap.getString("MOBILE_MSKMSHA_CNT"),				//申込者数（モバイル）
				setParamMap.getString("EOHNT"),								//申込件数（ネット）
				setParamMap.getString("EOHNT_EOHTL"),						//申込件数（ネット電話）
				setParamMap.getString("SANTEN_SET"),						//申込件数（３点セット）
				setParamMap.getString("EOHNT_EOHTV"),						//申込件数（ネットテレビ）
				setParamMap.getString("EOHTL"),								//申込件数（電話）
				setParamMap.getString("EOHTV"),								//申込件数（テレビ）
				setParamMap.getString("EOHTV_EOHTL"),						//申込件数（テレビ電話）
				setParamMap.getString("EOHNT_MOBILE"),						//申込件数（ネットモバイル）
				setParamMap.getString("EOHNT_EOHTL_MOBILE"),				//申込件数（ネット電話モバイル）
				setParamMap.getString("YONTEN_SET"),						//申込件数（４点セット）
				setParamMap.getString("EOHNT_EOHTV_MOBILE"),				//申込件数（ネットテレビモバイル）
				setParamMap.getString("EOHTL_MOBILE"),						//申込件数（電話モバイル）
				setParamMap.getString("EOHTV_MOBILE"),						//申込件数（テレビモバイル）
				setParamMap.getString("EOHTV_EOHTL_MOBILE"),				//申込件数（テレビ電話モバイル）
				setParamMap.getString("MOBILE"),							//申込件数（モバイル）
				setParamMap.getString("EOHTV_DOJI_MSKM"),					//申込件数（テレビ同時）
				setParamMap.getString("EOHNT_ADD"),							//申込件数（テレビ追加）
				setParamMap.getString("EOHTV_SNGL"),						//申込件数（テレビ単独）
				setParamMap.getString("MOBILE_DOJI_MSKM"),					//申込件数（モバイル同時）
				setParamMap.getString("MOBILE_ADD"),						//申込件数（モバイル追加）
				setParamMap.getString("MOBILE_SNGL"),						//申込件数（モバイル単独）
				sktgwOptntyCd,												//集計契機コード
				getBatchDatetime(),											//登録年月日時分秒
				getUpdOperator(),											//登録オペレータアカウント
				getBatchDatetime(),											//更新年月日時分秒
				getUpdOperator(),											//更新オペレータアカウント
				null,														//削除年月日時分秒
				null,														//削除オペレータアカウント
				"0",														//無効フラグ
				"ADD_UNYO_YMD",												//登録運用年月日
				"ADD_TRN_ID",												//登録処理ＩＤ
				"UPD_UNYO_YMD",												//更新運用年月日
				"UPD_TRN_ID",												//更新処理ＩＤ
				null,														//削除運用年月日
				null														//削除処理ＩＤ
		};
		
		executeKK_T_MDBT_MKC_SRLT_PKINSERT(param);

	}
	
	/**
	 * バッチ日時(17桁)を取得する
	 * @return バッチ日時
	 * @throws Exception
	 */
	private String getBatchDatetime() throws Exception
	{
		return JCCBatCommon.getSysDateTimeStamp();
	}


	/**
	 * 更新者IDを取得する.
	 * 
	 * @return 更新者ID
	 */
	private String getUpdOperator()
	{
		return commonItem.getBatchUserId();
	}
	
	/**
	 * 代理店用集計結果項目コードを取得する。
	 * @param paramMap
	 * @return 代理店用集計結果項目コード
	 * @throws Exception
	 */
	private String getAgntShukKmkCd(JBSbatCommonDBInterface paramMap) throws Exception
	{
		// 仮申込フラグ
		String kariMskmFlg = paramMap.getString("KARI_MSKM_FLG");
		
		// 本申込の場合
		if(JKKStrConst.KARI_MSKM_FLG_HON_MSKM.equals(kariMskmFlg))
		{
			// 代理店種別コード
			String agntSbtCd = paramMap.getString("AGNT_SBT_CD");
			
			// M社 or I社 or KC社
			if(JKKStrConst.AGNT_SBT_CD_M_SHA.equals(agntSbtCd) 
				|| JKKStrConst.AGNT_SBT_CD_I_SHA.equals(agntSbtCd) 
				|| JKKStrConst.AGNT_SBT_CD_KC_SHA.equals(agntSbtCd))
			{
				return workParamWebKrShukCd;
			}
			// 量販店
			else if(JKKStrConst.AGNT_SBT_CD_RYO.equals(agntSbtCd))
			{
				return workParamRhKrShukCd;
			}
			// 訪販
			else if(JKKStrConst.AGNT_SBT_CD_HOU.equals(agntSbtCd))
			{
				return workParamVhKrShukCd;
			}
			// T社 or B社 or K社
			else if(JKKStrConst.AGNT_SBT_CD_T_SHA.equals(agntSbtCd)
					|| JKKStrConst.AGNT_SBT_CD_B_SHA.equals(agntSbtCd)
					||  JKKStrConst.AGNT_SBT_CD_K_SHA.equals(agntSbtCd))
			{
				return workParamCustKrShukCd;
			}
		}
		else
		{
			return paramMap.getString("TTL_BUSINESS_MSKM_OPT_CD");
		}	

		return "";
	}
}
