/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKAutoShonin
*	ソースファイル名	：JBSbatKKAutoShonin.java
*	作成者				：富士通　
*	作成日				：2011年08月25日
*＜機能概要＞
*　自動承認部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/25   富士通		新規作成
*   v3.00.00    2012/06/21   FJ）三浦    【UI残817】進捗情報の追加
*   v4.00.00    2012/07/24   FJ)芳澤     【ANK-373】申込断面データの追加
*   v4.01.00    2012/12/03   FJ)三浦     【ANK-1247-00-00】システム日付を運用日付に変更
*   v4.02.00    2013/01/23   FJ)三浦     【TAI-2012-0000142】異常メッセージの修正
*   v5.00.00    2013/04/11   FJ)北浦     【IT1-2013-0000848】年月日時分秒の設定見直し
*   v5.00.00    2013/06/10   FJ)多田     【LT-2013-0000024】進捗の異動年月日に運用日が設定されている
*   v10.00.00   2014/07/23   FJ)川島     【ANK-2137-00-00】提携住宅会社用WEB受付画面配置
*   v15.00.00   2015/08/20   FJ)中山     【OM-2015-0002052】性能改善
*	v25.00.00	2016/05/23	 FJ) 澤田	 【ANK-2679-00-00】eoスタッフ対応
*	v29.00.00	2016/09/26	 FJ) 澤田	 【ANK-2990-00-00】【eo電気】同時申込・量販訪販対応（STEP2-2）
*	v29.01.00	2017/05/19	 FJ) 澤田	 【IT1-2017-0000059】申込スキーマの項目漏れ対応
*	v33.00.00	2017/10/18   FJ)柳       【ANK-3307-00-00】訪販申込情報閲覧システム向けAPIへの工事進捗・キャンセル状況取得機能追加
*	v38.00.00	2017/10/18   FJ)大崎     【ANK-3436-00-00】eo光×eo電気×mineoセット割対応
*	v52.00.00   2021/01/17   FJ)星野 	 【ANK-3910-00-00】定額サービスリース品追加対応
*	v53.00.00   2021/04/19   FJ)西川 	 【ANK-4009-00-00】CX戦略WG方針対応
*********************************************************************/
package eo.business.service;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
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.common.util.JPCDateUtil;
import eo.common.util.JPCUtilCommon;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKAutoShonin extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(申込)*/
	private static final String D_TBL_NAME_KK_T_MSKM = "KK_T_MSKM";

	/** テーブル(申込断面)*/
	private static final String D_TBL_NAME_KK_T_MSKM_DMEN = "KK_T_MSKM_DMEN";

	/** テーブル(進捗)*/
	private static final String D_TBL_NAME_KK_T_PRG = "KK_T_PRG";

	/** テーブル(異動理由)*/
	private static final String D_TBL_NAME_KK_T_IDO_RSN = "KK_T_IDO_RSN";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String KK_T_MSKM_KK_SELECT_002 = "KK_SELECT_002";

	/** SQL定義キー(KK_SELECT_003)*/
	private static final String KK_T_MSKM_KK_SELECT_003 = "KK_SELECT_003";

	/** SQL定義キー(KK_SELECT_008)*/
	private static final String KK_T_MSKM_KK_SELECT_008 = "KK_SELECT_008";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String KK_T_MSKM_DMEN_KK_SELECT_001 = "KK_SELECT_001";

	/** SQL定義キー(KK_SELECT_035)*/
	private static final String KK_T_PRG_KK_SELECT_035 = "KK_SELECT_035";

	/** テーブルアクセスクラス(申込)*/
	private JBSbatSQLAccess db_KK_T_MSKM = null;

	/** テーブルアクセスクラス(申込断面)*/
	private JBSbatSQLAccess db_KK_T_MSKM_DMEN = null;

	/** テーブルアクセスクラス(進捗)*/
	private JBSbatSQLAccess db_KK_T_PRG = null;

	/** テーブルアクセスクラス(異動理由)*/
	private JBSbatSQLAccess db_KK_T_IDO_RSN = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**対象年月日**/
	private String trgtYmd = "";
	/**対象日時時分秒**/
	private String trgtDate = "";
	/** 運用日付 **/
	private String unyoDate = "";
	
	/** シーケンス定義名(進捗番号) */
	private static final String SEQ_NAME = "SEQ_PRG_NO";

	/** 接頭語(進捗番号) */
	private static final String PREFIX_TCHISHOUWNO = "";

	/** シーケンス桁数(進捗番号) */
	private static final int SEQ_LENGTH = 12;
	
	/** 異動理由シーケンス名 */
	private static final String SEQIDORSNNO = "SEQ_IDO_RSN_NO";

	/** 接頭語(空白) */
	private static final String PREFIX_KUUHAKU = "";
	
	/** 桁数(12) */
	private static final int KETASUU = 12;

	/** 承認済みフラグ*/
	private static final String SHONINZUMI = "1";

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_MSKM = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM);
		db_KK_T_MSKM_DMEN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM_DMEN);
		db_KK_T_PRG = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_PRG);
		db_KK_T_IDO_RSN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_IDO_RSN);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
		
		unyoDate = commonItem.getOpeDate();
		
		if("".equals(commonItem.getFreeItem()))
		{
			trgtYmd = unyoDate;
			trgtDate = JPCDateUtil.addDay(unyoDate, 1) + "000000000";
		}
		else
		{
			String freeItem = commonItem.getFreeItem();

			if(14 != freeItem.length())
			{
				// パラメータの処理年月日が不正です（処理年月日=freeItem[0]、処理時間=freeItem[1]）
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0130CE, new String[] {
						"処理年月日:" + freeItem });
			}

			// 年月日時分のチェック
			if (false == checkDate(freeItem)) 
			{
				// パラメータの処理年月日が不正です（処理年月日=freeItem[0]、処理時間=freeItem[1]）
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0130CE, new String[] {
						"処理年月日:" + freeItem });
			}
			
			trgtYmd = freeItem.substring(0, 8);
			trgtDate = freeItem + "000";
		}
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		List<JBSbatCommonDBInterface> mskmList = getMskmParamList(trgtDate, trgtYmd);
		
		for(JBSbatCommonDBInterface mskm : mskmList)
		{	
			String mskmNo = mskm.getString("MSKM_NO");
			
			List<JBSbatCommonDBInterface> mskmUpd = getMskmUpd(mskmNo);

			String updDtm   = mskm.getString("UPD_DTM");
			String updDtmBf = mskmUpd.get(0).getString("UPD_DTM");

			if (updDtm.equals(updDtmBf)) 
			{
				//進捗情報の取得処理
				List<JBSbatCommonDBInterface> svcList = getPrgInfo(unyoDate, mskmNo);
				
				// 申込書明細番号
				String mskmshoNo = null;
				// 申込明細番号
				String mskmDtlNo = null;
				// 進捗年月日時分秒
				String pgrDateTime = null;
				// 異動年月日時分秒
				String idoDateTime = null;
				
				//システム日時
				String sysDateTime = getSYSDatetime();
				
				for(JBSbatCommonDBInterface svc : svcList)
				{
					// 進捗年月日時分秒の取得
					pgrDateTime = getPGRDatetime();	
					// 異動年月日時分秒の取得
					idoDateTime = getIDODatetime(svc);
					
					//進捗登録処理
					prgAdd(svc, idoDateTime, pgrDateTime);
					//異動登録
					idoRsnAdd(svc, idoDateTime, sysDateTime);
					
					//申込書明細番号の取得
					mskmshoNo = svc.getString("MSKMSHO_NO");
					//申込明細番号の取得
					mskmDtlNo = svc.getString("MSKM_DTL_NO");
				}
				
				//申込登録処理
				mskmShonin(mskm);
				if(null == mskmDtlNo)
				{
					// 申込明細テーブルから申込書番号が取得できなければ、例外をthrowする
					throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
							"申込明細テーブルの", "（申込番号：" + mskmNo + "）"});
				}
				
				if(null == mskmshoNo)
				{
					// 申込明細テーブルから申込書番号が取得できなければ、例外をthrowする
					throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
							"申込明細テーブルの申込書番号の", "（申込明細番号：" + mskmDtlNo + "）"});
				}
				
				//申込断面データのレコードロック
				String demnMskmshoNo = lockMskmDmen(mskmshoNo);

				if(null == demnMskmshoNo)
				{
					// 申込断面データに該当の申込書番号のレコードがなければ、例外をthrowする
					throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0520CE, new String[] {
							"申込断面テーブルの申込書番号に該当する", "（申込書番号：" + mskmshoNo + "）"});
				}
				//申込断面データのPK更新
				String[] setParam = {SHONINZUMI, sysDateTime, getUpdOperator()};
				String[] whereParam = {mskmshoNo};
				executeKK_T_MSKM_DMEN_PKUPDATE(setParam, whereParam);
				
			}
			else
			{
				// 業務エラーログ出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0360KE, new String[]{ "申込テーブル", "申込番号=" + mskmNo});
			}
			
		}
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_MSKM.close();
		db_KK_T_MSKM_DMEN.close();
		db_KK_T_PRG.close();
		db_KK_T_IDO_RSN.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	運用日付
	 *		 	運用日付
	 *			処理年月日-7日の年月日時分秒
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_KK_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
//OM-2015-0002052 ADD START
		paramList.setValue(param[2].toString());
//OM-2015-0002052 ADD END

		// DBアクセスを実行します
		db_KK_T_MSKM.selectBySqlDefine(paramList, KK_T_MSKM_KK_SELECT_002);
	}

	/**
	 * SQLKEY(KK_SELECT_003)で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_MSKM_KK_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM.selectBySqlDefine(paramList, KK_T_MSKM_KK_SELECT_003);
	}

	/**
	 * SQLKEY(KK_SELECT_008)で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_MSKM_KK_SELECT_008(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM.selectBySqlDefine(paramList, KK_T_MSKM_KK_SELECT_008);
	}

	/**
	 * 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_MSKM_DMEN_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM_DMEN.selectBySqlDefine(paramList, KK_T_MSKM_DMEN_KK_SELECT_001);
	}

	/**
	 * SQLKEY(KK_SELECT_035)で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_PRG_KK_SELECT_035(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_KK_T_PRG.selectBySqlDefine(paramList, KK_T_PRG_KK_SELECT_035);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	申込番号				MSKM_NO
	 *		 	世代登録年月日時分秒				GENE_ADD_DTM
	 *		 	申込ステータス				MSKM_STAT
	 *		 	ＳＹＳＩＤ				SYSID
	 *		 	申込種別コード				MSKM_SBT_CD
	 *		 	申込書到着年月日				MSKMSHO_ARIV_YMD
	 *		 	申込受付年月日時分秒				MSKM_UK_DTM
	 *		 	申込受付担当ユーザーＩＤ				MSKM_UK_TNT_USER_ID
	 *		 	申込年月日				MSKM_YMD
	 *		 	総合営業センター受付番号				TTL_BUSINESS_CENTER_UK_NO
	 *		 	総合営業申込契機コード				TTL_BUSINESS_MSKM_OPT_CD
	 *		 	申込連絡先電話番号				MSKM_RRKS_TELNO
	 *		 	申込実施者種別コード				MSKM_JSSIS_SBT_CD
	 *		 	お客様ご要望事項				CUST_YOBO_JIKO
	 *		 	電話連絡希望日種別コード				TEL_RRK_KIBOD_SBT_CD
	 *		 	電話連絡希望時間帯コード				TEL_RRK_KIBO_TIME_CD
	 *		 	宅内調査希望日種別コード				TAKCHO_KIBOD_SBT_CD
	 *		 	宅内調査希望時間帯コード				TAKCHO_KIBO_TIME_CD
	 *		 	申込保留年月日時分秒				MSKM_PDING_DTM
	 *		 	申込保留理由コード				MSKM_PDING_RSN_CD
	 *		 	申込保留解除年月日				MSKM_PDING_RLS_YMD
	 *		 	申込差戻し年月日				MSKM_RTRN_YMD
	 *		 	申込差戻し理由コード				MSKM_RTRN_RSN_CD
	 *		 	仮申込フラグ				KARI_MSKM_FLG
	 *		 	申込内容確認完了年月日				MSKM_NAIYO_CFM_FIN_YMD
	 *		 	申込キャンセル年月日				MSKM_CANCEL_YMD
	 *		 	申込キャンセル理由コード				MSKM_CANCEL_RSN_CD
	 *		 	申込キャンセル取消年月日				MSKM_CANCEL_CL_YMD
	 *		 	リファラー				REFERER
	 *		 	最終画面ＩＤ				LAST_SCREEN_ID
	 *		 	申込内容承認申請年月日				MSKM_NYO_SHONIN_SHIN_YMD
	 *		 	申込内容承認年月日				MSKM_NYO_SHONIN_YMD
	 *		 	関西電力お客様情報授受同意有無				KEPCO_CUSTINFO_JUJU_DOI_UM
	 *		 	代理店用集計項目コード				AGNT_SHUK_KMK_CD
	 *		 	照査前連絡事項要否				SHOSA_BF_RRK_JIKO_YH
	 *		 	照査前連絡事項				SHOSA_BF_RRK_JIKO
	 *		 	利用サービス継続種別コード				USE_SVC_KEIZK_SBT_CD
	 *		 	アンテナレンタル希望有無				ANTENNA_RENT_KIBO_UM
	 *		 	差戻し中申込破棄年月日時分秒				RTRN_CHU_MSKM_ABDMNT_DTM
	 *		 	コンシューマ営業用申込状態識別コード				CONSMBSN_MSKM_STAT_SKBT_CD
	 *		 	受付担当者識別コード				UK_TNTSHA_SKBT_CD
	 *		 	工事依頼情報連絡事項				KOJI_REQ_INFO_RRK_JIKO
	 *		 	申込経路識別コード				MSKM_ROUTE_SKBT_CD
	 *		 	代理店申込取次有無				AGNT_MSKM_TRTG_UM
	 *		 	登録年月日時分秒				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
	 *		 	提携住宅会社コード				TKJCP_CD
	 *		 	提携住宅会社名				TKJCP_NM
	 *		 	提携住宅会社支店・営業所名				TKJCP_STNEGS_NM
	 *		 	提携住宅会社担当者名				TKJCPTTS_NM
	 *		 	提携住宅会社担当者職種名				TKJCPTTS_SHKSNM
	 *		 	提携住宅会社担当者電話番号				TKJCPTTS_TLN
	 *		 	分譲地名				BUNJOCHI_NM
	 *		 	分譲地区画番号メモ				BUNJOCHI_KKK_NO_MEMO
	 *		 	入居予定時期				NYUKYO_RSV_JK
	 *		 	代理店申込受付eoスタッフユーザーID			AGNT_MKM_UK_EOSTF_USER_ID
	 *		 	代理店申込受付量販店員カナ名(姓)			AGNT_MKM_UK_RHSTF_KANA_SEI
	 *		 	eo電気同時申込意思有無						EOELEC_DOJI_MSKM_ISHI_UM
	 *		 	サンキューコール実施年月日					THNX_CALL_JSSI_YMD
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("MSKM_NO", setParam[0]);
		setMap.setValue("GENE_ADD_DTM", setParam[1]);
		setMap.setValue("MSKM_STAT", setParam[2]);
		setMap.setValue("SYSID", setParam[3]);
		setMap.setValue("MSKM_SBT_CD", setParam[4]);
		setMap.setValue("MSKMSHO_ARIV_YMD", setParam[5]);
		setMap.setValue("MSKM_UK_DTM", setParam[6]);
		setMap.setValue("MSKM_UK_TNT_USER_ID", setParam[7]);
		setMap.setValue("MSKM_YMD", setParam[8]);
		setMap.setValue("TTL_BUSINESS_CENTER_UK_NO", setParam[9]);
		setMap.setValue("TTL_BUSINESS_MSKM_OPT_CD", setParam[10]);
		setMap.setValue("MSKM_RRKS_TELNO", setParam[11]);
		setMap.setValue("MSKM_JSSIS_SBT_CD", setParam[12]);
		setMap.setValue("CUST_YOBO_JIKO", setParam[13]);
		setMap.setValue("TEL_RRK_KIBOD_SBT_CD", setParam[14]);
		setMap.setValue("TEL_RRK_KIBO_TIME_CD", setParam[15]);
		setMap.setValue("TAKCHO_KIBOD_SBT_CD", setParam[16]);
		setMap.setValue("TAKCHO_KIBO_TIME_CD", setParam[17]);
		setMap.setValue("MSKM_PDING_DTM", setParam[18]);
		setMap.setValue("MSKM_PDING_RSN_CD", setParam[19]);
		setMap.setValue("MSKM_PDING_RLS_YMD", setParam[20]);
		setMap.setValue("MSKM_RTRN_YMD", setParam[21]);
		setMap.setValue("MSKM_RTRN_RSN_CD", setParam[22]);
		setMap.setValue("KARI_MSKM_FLG", setParam[23]);
		setMap.setValue("MSKM_NAIYO_CFM_FIN_YMD", setParam[24]);
		setMap.setValue("MSKM_CANCEL_YMD", setParam[25]);
		setMap.setValue("MSKM_CANCEL_RSN_CD", setParam[26]);
		setMap.setValue("MSKM_CANCEL_CL_YMD", setParam[27]);
		setMap.setValue("REFERER", setParam[28]);
		setMap.setValue("LAST_SCREEN_ID", setParam[29]);
		setMap.setValue("MSKM_NYO_SHONIN_SHIN_YMD", setParam[30]);
		setMap.setValue("MSKM_NYO_SHONIN_YMD", setParam[31]);
		setMap.setValue("KEPCO_CUSTINFO_JUJU_DOI_UM", setParam[32]);
		setMap.setValue("AGNT_SHUK_KMK_CD", setParam[33]);
		setMap.setValue("SHOSA_BF_RRK_JIKO_YH", setParam[34]);
		setMap.setValue("SHOSA_BF_RRK_JIKO", setParam[35]);
		setMap.setValue("USE_SVC_KEIZK_SBT_CD", setParam[36]);
		setMap.setValue("ANTENNA_RENT_KIBO_UM", setParam[37]);
		setMap.setValue("RTRN_CHU_MSKM_ABDMNT_DTM", setParam[38]);
		setMap.setValue("CONSMBSN_MSKM_STAT_SKBT_CD", setParam[39]);
		setMap.setValue("UK_TNTSHA_SKBT_CD", setParam[40]);
		setMap.setValue("KOJI_REQ_INFO_RRK_JIKO", setParam[41]);
		setMap.setValue("MSKM_ROUTE_SKBT_CD", setParam[42]);
		setMap.setValue("AGNT_MSKM_TRTG_UM", setParam[43]);
		setMap.setValue("ADD_DTM", setParam[44]);
		setMap.setValue("ADD_OPEACNT", setParam[45]);
		setMap.setValue("UPD_DTM", setParam[46]);
		setMap.setValue("UPD_OPEACNT", setParam[47]);
		setMap.setValue("DEL_DTM", setParam[48]);
		setMap.setValue("DEL_OPEACNT", setParam[49]);
		setMap.setValue("MK_FLG", setParam[50]);
		setMap.setValue("ADD_UNYO_YMD", setParam[51]);
		setMap.setValue("ADD_TRN_ID", setParam[52]);
		setMap.setValue("UPD_UNYO_YMD", setParam[53]);
		setMap.setValue("UPD_TRN_ID", setParam[54]);
		setMap.setValue("DEL_UNYO_YMD", setParam[55]);
		setMap.setValue("DEL_TRN_ID", setParam[56]);
		setMap.setValue("TKJCP_CD", setParam[57]);
		setMap.setValue("TKJCP_NM", setParam[58]);
		setMap.setValue("TKJCP_STNEGS_NM", setParam[59]);
		setMap.setValue("TKJCPTTS_NM", setParam[60]);
		setMap.setValue("TKJCPTTS_SHKSNM", setParam[61]);
		setMap.setValue("TKJCPTTS_TLN", setParam[62]);
		setMap.setValue("BUNJOCHI_NM", setParam[63]);
		setMap.setValue("BUNJOCHI_KKK_NO_MEMO", setParam[64]);
		setMap.setValue("NYUKYO_RSV_JK", setParam[65]);
		// ANK-2679-00-00 2016/05/23 ADD START
		setMap.setValue("AGNT_MKM_UK_EOSTF_USER_ID", setParam[66]);
		setMap.setValue("AGNT_MKM_UK_RHSTF_KANA_SEI", setParam[67]);
		// ANK-2679-00-00 2016/05/23 ADD END
		// ANK-2990-00-00 2016/09/26 ADD START
		setMap.setValue("EOELEC_DOJI_MSKM_ISHI_UM", setParam[68]);
		// ANK-2990-00-00 2016/09/26 ADD END
		// IT1-2017-0000059 ADD START
		setMap.setValue("THNX_CALL_JSSI_YMD", setParam[69]);
// ANK-3307-00-00 2017/10/18 DEL START
//		setMap.setValue("MSKM_CNCL_JGI_SNN_SHIN_YMD", setParam[70]);
//		setMap.setValue("MSKM_CNCL_JGI_SNN_YMD", setParam[71]);
//		setMap.setValue("MSKM_CNCL_JGI_HNN_YMD", setParam[72]);
// ANK-3307-00-00 2017/10/18 DEL END
		// IT1-2017-0000059 ADD END
// ANK-3436-00-00 2018/07/11 ADD START
		setMap.setValue("SET_WARI_MKM_SKBT_DIV", setParam[70]);
		setMap.setValue("SET_WARI_MKM_SKBT_NO", setParam[71]);
// ANK-3436-00-00 2018/07/11 ADD END
// ANK-3910-00-00対応 20210117 星野 ADD START
		setMap.setValue("TEGAK_SVC_MSKM_KIKI", setParam[72]);
// ANK-3910-00-00対応 20210117 星野 ADD END
		setMap.setValue("SKBT_KEY", setParam[73]);
		// DBアクセスを実行します
		db_KK_T_MSKM.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	進捗番号				PRG_NO
	 *		 	申込明細番号				MSKM_DTL_NO
	 *		 	請求契約番号				SEIKY_KEI_NO
	 *		 	請求方法番号（口座）				SEIKY_WAY_NO_KOZA
	 *		 	請求方法番号（クレジットカード）				SEIKY_WAY_NO_CRECARD
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	サービス契約内訳番号				SVC_KEI_UCWK_NO
	 *		 	サービス契約回線内訳番号				SVC_KEI_KAISEN_UCWK_NO
	 *		 	機器提供サービス契約番号				KKTK_SVC_KEI_NO
	 *		 	オプションサービス契約番号				OP_SVC_KEI_NO
	 *		 	請求オプションサービス契約番号				SEIOPSVC_KEI_NO
	 *		 	サブオプションサービス契約番号				SBOP_SVC_KEI_NO
	 *		 	割引サービス契約番号				WRIB_SVC_KEI_NO
	 *		 	異動区分				IDO_DIV
	 *		 	異動年月日時分秒				IDO_DTM
	 *		 	進捗ステータス				PRG_STAT
	 *		 	進捗年月日時分秒				PRG_DTM
	 *		 	進捗メモ				PRG_MEMO
	 *		 	進捗特記事項１				PRG_TKJK_1
	 *		 	進捗特記事項２				PRG_TKJK_2
	 *		 	登録年月日時分秒				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_PRG_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("PRG_NO", setParam[0]);
		setMap.setValue("MSKM_DTL_NO", setParam[1]);
		setMap.setValue("SEIKY_KEI_NO", setParam[2]);
		setMap.setValue("SEIKY_WAY_NO_KOZA", setParam[3]);
		setMap.setValue("SEIKY_WAY_NO_CRECARD", setParam[4]);
		setMap.setValue("SVC_KEI_NO", setParam[5]);
		setMap.setValue("SVC_KEI_UCWK_NO", setParam[6]);
		setMap.setValue("SVC_KEI_KAISEN_UCWK_NO", setParam[7]);
		setMap.setValue("KKTK_SVC_KEI_NO", setParam[8]);
		setMap.setValue("OP_SVC_KEI_NO", setParam[9]);
		setMap.setValue("SEIOPSVC_KEI_NO", setParam[10]);
		setMap.setValue("SBOP_SVC_KEI_NO", setParam[11]);
		setMap.setValue("WRIB_SVC_KEI_NO", setParam[12]);
		setMap.setValue("IDO_DIV", setParam[13]);
		setMap.setValue("IDO_DTM", setParam[14]);
		setMap.setValue("PRG_STAT", setParam[15]);
		setMap.setValue("PRG_DTM", setParam[16]);
		setMap.setValue("PRG_MEMO", setParam[17]);
		setMap.setValue("PRG_TKJK_1", setParam[18]);
		setMap.setValue("PRG_TKJK_2", setParam[19]);
		setMap.setValue("ADD_DTM", setParam[20]);
		setMap.setValue("ADD_OPEACNT", setParam[21]);
		setMap.setValue("UPD_DTM", setParam[22]);
		setMap.setValue("UPD_OPEACNT", setParam[23]);
		setMap.setValue("DEL_DTM", setParam[24]);
		setMap.setValue("DEL_OPEACNT", setParam[25]);
		setMap.setValue("MK_FLG", setParam[26]);
		setMap.setValue("ADD_UNYO_YMD", setParam[27]);
		setMap.setValue("ADD_TRN_ID", setParam[28]);
		setMap.setValue("UPD_UNYO_YMD", setParam[29]);
		setMap.setValue("UPD_TRN_ID", setParam[30]);
		setMap.setValue("DEL_UNYO_YMD", setParam[31]);
		setMap.setValue("DEL_TRN_ID", setParam[32]);
	
		// DBアクセスを実行します
		db_KK_T_PRG.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	異動区分				IDO_DIV
	 *		 	異動年月日時分秒				IDO_DTM
	 *		 	異動理由コード				IDO_RSN_CD
	 *		 	異動理由番号				IDO_RSN_NO
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	異動理由メモ				IDO_RSN_MEMO
	 *		 	登録年月日時分秒				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_IDO_RSN_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("IDO_DIV", setParam[0]);
		setMap.setValue("IDO_DTM", setParam[1]);
		setMap.setValue("IDO_RSN_CD", setParam[2]);
		setMap.setValue("IDO_RSN_NO", setParam[3]);
		setMap.setValue("SVC_KEI_NO", setParam[4]);
		setMap.setValue("IDO_RSN_MEMO", setParam[5]);
		setMap.setValue("ADD_DTM", setParam[6]);
		setMap.setValue("ADD_OPEACNT", setParam[7]);
		setMap.setValue("UPD_DTM", setParam[8]);
		setMap.setValue("UPD_OPEACNT", setParam[9]);
		setMap.setValue("DEL_DTM", setParam[10]);
		setMap.setValue("DEL_OPEACNT", setParam[11]);
		setMap.setValue("MK_FLG", setParam[12]);
		setMap.setValue("ADD_UNYO_YMD", setParam[13]);
		setMap.setValue("ADD_TRN_ID", setParam[14]);
		setMap.setValue("UPD_UNYO_YMD", setParam[15]);
		setMap.setValue("UPD_TRN_ID", setParam[16]);
		setMap.setValue("DEL_UNYO_YMD", setParam[17]);
		setMap.setValue("DEL_TRN_ID", setParam[18]);
	
		// DBアクセスを実行します
		db_KK_T_IDO_RSN.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	承認済フラグ				SHONIN_ZUMI_FLG
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	MSKMSHO_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_DMEN_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("SHONIN_ZUMI_FLG", setParam[0]);
		setMap.setValue("UPD_DTM", setParam[1]);
		setMap.setValue("UPD_OPEACNT", setParam[2]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("MSKMSHO_NO", whereParam[0]);

		// DBアクセスを実行します
		db_KK_T_MSKM_DMEN.updateByPrimaryKeys(whereMap, setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 申込テーブルから、対象日付以前のデータで申請中のデータを取得する。
	 * @param date
	 * @param ymd
	 * @return mskmList
	 * @throws Exception
	 */
	private List<JBSbatCommonDBInterface> getMskmParamList(String date, String ymd) throws Exception
	{
		List<JBSbatCommonDBInterface> mskmList = new ArrayList<JBSbatCommonDBInterface>();
//OM-2015-0002052 MOD START
//		Object[] param = {date, ymd};
		// 性能改善のため、処理年月日より7日前までの世代レコードを抽出対象とする。
		String staGeneDtm = JPCUtilCommon.addDay(trgtYmd, -7) + "000000000";
		Object[] param = {date, ymd, staGeneDtm};
//OM-2015-0002052 MOD END
		executeKK_T_MSKM_KK_SELECT_002(param);
		JBSbatCommonDBInterface mapMskm = new JBSbatCommonDBInterface();
		while(true)
		{
			mapMskm = db_KK_T_MSKM.selectNext();
			
			if(null != mapMskm)
			{
				mskmList.add(mapMskm);
			}
			else
			{
				break;
			}
		}
		return mskmList;
	}
	
	/**
	 * 申込テーブルから申込番号をキーにして、更新年月日を取得する。
	 * @param mskmNo
	 * @return mskmList
	 * @throws Exception
	 */
	private List<JBSbatCommonDBInterface> getMskmUpd(String mskmNo) throws Exception
	{
		List<JBSbatCommonDBInterface> mskmList = new ArrayList<JBSbatCommonDBInterface>();
		Object[] param = {mskmNo};
		executeKK_T_MSKM_KK_SELECT_003(param);
		JBSbatCommonDBInterface mapMskm = new JBSbatCommonDBInterface();
		while(true)
		{
			mapMskm = db_KK_T_MSKM.selectNext();
			
			if(null != mapMskm)
			{
				mskmList.add(mapMskm);
			}
			else
			{
				break;
			}
		}
		return mskmList;
	}
	
	/**
	 *申込番号をキーにして、進捗情報に必要な情報を取得する。
	 * @param opeDate
	 * @param mskmNo
	 * @return mskmList
	 * @throws Exception
	 */
	private List<JBSbatCommonDBInterface> getPrgInfo(String opeDate, String mskmNo) throws Exception
	{
		List<JBSbatCommonDBInterface> mskmPrgList = new ArrayList<JBSbatCommonDBInterface>();
		Object[] param = {opeDate, mskmNo};
		executeKK_T_MSKM_KK_SELECT_008(param);
		JBSbatCommonDBInterface mapMskmPrg = new JBSbatCommonDBInterface();
		while(true)
		{
			mapMskmPrg = db_KK_T_MSKM.selectNext();
			
			if(null != mapMskmPrg)
			{
				mskmPrgList.add(mapMskmPrg);
			}
			else
			{
				break;
			}
		}
		return mskmPrgList;
	}
	
	/**
	 * 申込テーブルにデータを登録する。
	 * @param mskmInfo
	 * @throws Exception
	 */
	private  void mskmShonin(JBSbatCommonDBInterface mskmInfo) throws Exception
	{
		Object[] param = {
			(String)mskmInfo.getValue("MSKM_NO"),					//申込番号
			getSYSDatetime(),										//世代登録年月日時分秒
			JKKStrConst.CD00060_130,								//申込ステータス
			(String)mskmInfo.getValue("SYSID"),						//SYSID
			(String)mskmInfo.getValue("MSKM_SBT_CD"),				//申込種別コード
			(String)mskmInfo.getValue("MSKMSHO_ARIV_YMD"),			//申込書到着年月日
			(String)mskmInfo.getValue("MSKM_UK_DTM"),				//申込受付年月日時分秒
			(String)mskmInfo.getValue("MSKM_UK_TNT_USER_ID"),		//申込受付担当ユーザーID
			(String)mskmInfo.getValue("MSKM_YMD"),					//申込年月日
			(String)mskmInfo.getValue("TTL_BUSINESS_CENTER_UK_NO"),	//総合営業センター受付番号
			(String)mskmInfo.getValue("TTL_BUSINESS_MSKM_OPT_CD"),	//総合営業申込契機コード
			(String)mskmInfo.getValue("MSKM_RRKS_TELNO"),			//申込連絡先電話番号
			(String)mskmInfo.getValue("MSKM_JSSIS_SBT_CD"),			//申込実施者種別コード
			(String)mskmInfo.getValue("CUST_YOBO_JIKO"),			//お客様ご要望事項
			(String)mskmInfo.getValue("TEL_RRK_KIBOD_SBT_CD"),		//電話連絡希望日種別コード
			(String)mskmInfo.getValue("TEL_RRK_KIBO_TIME_CD"),		//電話連絡希望時間帯コード
			(String)mskmInfo.getValue("TAKCHO_KIBOD_SBT_CD"),		//宅内調査希望日種別コード
			(String)mskmInfo.getValue("TAKCHO_KIBO_TIME_CD"),		//宅内調査希望時間帯コード
			(String)mskmInfo.getValue("MSKM_PDING_DTM"),			//申込保留年月日時分秒
			(String)mskmInfo.getValue("MSKM_PDING_RSN_CD"),			//申込保留理由コード
			(String)mskmInfo.getValue("MSKM_PDING_RLS_YMD"),		//申込保留解除年月日
			(String)mskmInfo.getValue("MSKM_RTRN_YMD"),				//申込差戻し年月日
			(String)mskmInfo.getValue("MSKM_RTRN_RSN_CD"),			//申込差戻し理由コード
			(String)mskmInfo.getValue("KARI_MSKM_FLG"),				//仮申込フラグ
			(String)mskmInfo.getValue("MSKM_NAIYO_CFM_FIN_YMD"),	//申込内容確認完了年月日
			(String)mskmInfo.getValue("MSKM_CANCEL_YMD"),			//申込キャンセル年月日
			(String)mskmInfo.getValue("MSKM_CANCEL_RSN_CD"),		//申込キャンセル理由コード
			(String)mskmInfo.getValue("MSKM_CANCEL_CL_YMD"),		//申込キャンセル取消年月日
			(String)mskmInfo.getValue("REFERER"),					//リファラー
			(String)mskmInfo.getValue("LAST_SCREEN_ID"),			//最終画面ID
			(String)mskmInfo.getValue("MSKM_NYO_SHONIN_SHIN_YMD"), 	//申込内容承認申請年月日
			unyoDate,												//申込内容承認年月日
			(String)mskmInfo.getValue("KEPCO_CUSTINFO_JUJU_DOI_UM"), //関西電力お客様情報授受同意有無
			(String)mskmInfo.getValue("AGNT_SHUK_KMK_CD"),			//代理店用集計項目コード
			(String)mskmInfo.getValue("SHOSA_BF_RRK_JIKO_YH"),		//照査前連絡事項要否
			(String)mskmInfo.getValue("SHOSA_BF_RRK_JIKO"),			//照査前連絡事項
			(String)mskmInfo.getValue("USE_SVC_KEIZK_SBT_CD"),		//利用サービス継続種別コード
			(String)mskmInfo.getValue("ANTENNA_RENT_KIBO_UM"),		//アンテナレンタル希望有無
			(String)mskmInfo.getValue("RTRN_CHU_MSKM_ABDMNT_DTM"),	//差戻し中申込破棄年月日時分秒
			JKKStrConst.CD00760_04,									//コンシューマ営業用申込状態識別コード
			(String)mskmInfo.getValue("UK_TNTSHA_SKBT_CD"),			//受付担当者識別コード
			(String)mskmInfo.getValue("KOJI_REQ_INFO_RRK_JIKO"),	//工事依頼情報連絡事項
			(String)mskmInfo.getValue("MSKM_ROUTE_SKBT_CD"),		//申込経路識別コード
			(String)mskmInfo.getValue("AGNT_MSKM_TRTG_UM"),			//代理店取次有無
			getSYSDatetime(),										//登録年月日時分秒
			getUpdOperator(),										//登録オペレータアカウント
			getSYSDatetime(),										//更新年月日時分秒
			getUpdOperator(),										//更新オペレータアカウント
			null,													//削除年月日時分秒
			null,													//削除オペレータアカウント
			"0",													//無効フラグ
			"ADD_UNYO_YMD",											//登録運用年月日
			"ADD_TRN_ID",											//登録処理ID
			"UPD_UNYO_YMD",											//更新運用年月日
			"UPD_TRN_ID",											//更新処理ID
			null,													//削除運用年月日
			null,													//削除処理ID
			(String)mskmInfo.getValue("TKJCP_CD"),					//提携住宅会社コード
			(String)mskmInfo.getValue("TKJCP_NM"),					//提携住宅会社名
			(String)mskmInfo.getValue("TKJCP_STNEGS_NM"),			//提携住宅会社支店・営業所名
			(String)mskmInfo.getValue("TKJCPTTS_NM"),				//提携住宅会社担当者名
			(String)mskmInfo.getValue("TKJCPTTS_SHKSNM"),			//提携住宅会社担当者職種名
			(String)mskmInfo.getValue("TKJCPTTS_TLN"),				//提携住宅会社担当者電話番号
			(String)mskmInfo.getValue("BUNJOCHI_NM"),				//分譲地名
			(String)mskmInfo.getValue("BUNJOCHI_KKK_NO_MEMO"),		//分譲地区画番号メモ
			// ANK-2679-00-00 2016/05/23 MOD START
			//(String)mskmInfo.getValue("NYUKYO_RSV_JK")			//入居予定時期
			(String)mskmInfo.getValue("NYUKYO_RSV_JK"),				//入居予定時期
			// ANK-2679-00-00 2016/05/23 MOD END
			// ANK-2679-00-00 2016/05/23 ADD START
			(String)mskmInfo.getValue("AGNT_MKM_UK_EOSTF_USER_ID"),	//代理店申込受付eoスタッフユーザーＩＤ
				// ANK-2990-00-00 2016/09/26 ADD START
				//(String)mskmInfo.getValue("AGNT_MKM_UK_RHSTF_KANA_SEI")	//代理店申込受付量販店員カナ名（姓）			
				(String)mskmInfo.getValue("AGNT_MKM_UK_RHSTF_KANA_SEI"),	//代理店申込受付量販店員カナ名（姓）			
				// ANK-2990-00-00 2016/09/26 ADD END
			// ANK-2679-00-00 2016/05/23 ADD END
			// ANK-2990-00-00 2016/09/26 ADD START
			(String)mskmInfo.getValue("EOELEC_DOJI_MSKM_ISHI_UM"),	//eo電気同時申込意思有無	
			// ANK-2990-00-00 2016/09/26 ADD END
			// IT1-2017-0000059 ADD START
			(String)mskmInfo.getValue("THNX_CALL_JSSI_YMD"),		//サンキューコール実施年月日	
// ANK-3307-00-00 2017/10/18 DEL START
//			(String)mskmInfo.getValue("MSKM_CNCL_JGI_SNN_SHIN_YMD"),//申込キャンセル除外承認申請年月日
//			(String)mskmInfo.getValue("MSKM_CNCL_JGI_SNN_YMD"),		//申込キャンセル除外承認年月日
//			(String)mskmInfo.getValue("MSKM_CNCL_JGI_HNN_YMD")		//申込キャンセル除外否認年月日	
// ANK-3307-00-00 2017/10/18 DEL END
			// IT1-2017-0000059 ADD END
// ANK-3436-00-00 2018/07/11 ADD START
			(String)mskmInfo.getValue("SET_WARI_MKM_SKBT_DIV"),		//セット割申込識別区分
			(String)mskmInfo.getValue("SET_WARI_MKM_SKBT_NO")		//セット割申込識別番号
// ANK-3436-00-00 2018/07/11 ADD END
// ANK-3910-00-00対応 20210117 星野 ADD START
			, (String)mskmInfo.getValue("TEGAK_SVC_MSKM_KIKI")		//定額サービス申込機器
// ANK-3910-00-00対応 20210117 星野 ADD END
			, (String)mskmInfo.getValue("SKBT_KEY")		//識別キー
		};
		
		executeKK_T_MSKM_PKINSERT(param);
		
	}
	
	
	/**
	 * 進捗テーブルにデータを登録する。
	 * @param prcMap
	 * @param idoDateTime
	 * @param pgrDateTime
	 * @throws Exception
	 */
	private void prgAdd(JBSbatCommonDBInterface prcMap, String idoDateTime, String pgrDateTime) throws Exception
	{
		
		Object[] setParm = 
		{
			getNextprgNo(),						 //進捗番号
			prcMap.getValue("MSKM_DTL_NO"),		 //申込明細番号
			null,								 //請求契約番号
			null,								 //請求方法番号(口座)
			null,								 //請求方法番号(クレジットカード)
			prcMap.getValue("SVC_KEI_NO"),		 //サービス契約番号
			null,								 //サービス契約内訳番号
			null,								 //サービス契約回線内訳番号
			null,								 //機器提供サービス契約番号
			null,								 //オプションサービス契約番号
			null,								 //請求オプションサービス契約番号
			null,								 //サブオプションサービス契約番号
			null,								 //割引サービス契約番号
			prcMap.getValue("MSKM_SBT_CD"),		 //異動区分
			idoDateTime,						 //異動年月日時分秒
			JKKStrConst.CD00647_MSKM_REQ_SHONIN, //進捗ステータス
			pgrDateTime,						 //進捗年月日時分秒
			null,								 //進捗メモ
			null,								 //進捗特記事項1
			null,								 //進捗特記事項2
			getSYSDatetime(),					 //登録年月日時分秒
			getUpdOperator(),					 //登録オペレータアカウント
			getSYSDatetime(),					 //更新年月日時分秒
			getUpdOperator(),					 //更新オペレータアカウント
			null,								 //削除年月日時分秒
			null,								 //削除オペレータアカウント
			0,									 //無効フラグ
			"ADD_UNYO_YMD",						 //登録運用年月日
			"ADD_TRN_ID",						 //登録処理ID
			"UPD_UNYO_YMD",						 //更新運用年月日
			"UPD_TRN_ID",						 //更新処理ID
			null,								 //削除運用年月日
			null								 //削除処理ID
		};
		
		executeKK_T_PRG_PKINSERT(setParm);
	}
	
	/**
	 * 異動区分テーブルにデータを登録する。
	 * @param svcMap
	 * @param idoDateTime
	 * @param sysDateTime
	 * @throws Exception
	 */
	private void idoRsnAdd(JBSbatCommonDBInterface svcMap, String idoDateTime, String sysDateTime) throws Exception
	{
		Object[] setParam = 
		{
			svcMap.getValue("MSKM_SBT_CD"),			//異動区分
			idoDateTime,							//異動年月日時分秒
			JKKStrConst.CD00846_OTHER,				//異動理由コード（設定値：その他）
			getNextidoRsnNo(),						//異動理由番号
			svcMap.getValue("SVC_KEI_NO"),			//サービス契約番号
			null,									//異動理由メモ
			sysDateTime,							//登録年月日時分秒
			getUpdOperator(),						//登録オペレータアカウント
			sysDateTime,							//更新年月日時分秒
			getUpdOperator(),						//更新オペレータアカウント
			null,									//削除年月日時分秒
			null,									//削除オペレータアカウント
			"0",									//無効フラグ
			"ADD_UNYO_YMD",							//登録運用年月日
			"ADD_TRN_ID",							//登録処理ID
			"UPD_UNYO_YMD",							//更新運用年月日
			"UPD_TRN_ID",							//更新処理ID
			null,									//削除運用年月日
			null,									//削除処理ID
		};
		
		executeKK_T_IDO_RSN_PKINSERT(setParam);
	}

	/**
	 * システム日時(17桁)を取得する
	 * @return システム日時
	 * @throws Exception
	 */
	private String getSYSDatetime() throws Exception
	{
		return JCCBatCommon.getSysDateTimeStamp();
	}
	
	/**
	 * 異動年月日(17桁)を取得する
	 * @param prcMap
	 * @return 異動年月日
	 * @throws Exception
	 */
	private String getIDODatetime(JBSbatCommonDBInterface prcMap) throws Exception
	{
		Object[] param = {prcMap.getValue("MSKM_DTL_NO"), prcMap.getValue("SVC_KEI_NO"), prcMap.getValue("MSKM_SBT_CD")};
		JBSbatCommonDBInterface mapPrg = new JBSbatCommonDBInterface();
		
		//進捗データの取得
		executeKK_T_PRG_KK_SELECT_035(param);
		mapPrg = db_KK_T_PRG.selectNext();
		if(null == mapPrg)
		{
			return getSYSDatetime();
		}
		return mapPrg.getString("IDO_DTM");
	}
	
	/**
	 * 進捗年月日時分秒(17桁)を取得する
	 * @return システム日時
	 * @throws Exception
	 */
	private String getPGRDatetime() throws Exception
	{
		SimpleDateFormat sdf = new SimpleDateFormat("HHMMSSsss");
		return commonItem.getOpeDate() + sdf.format(sdf.parse(JCCBatCommon.getSysDateTimeStamp()));
	}
	
	/**
	 * 更新者IDを取得する.
	 * 
	 * @return 更新者ID
	 */
	private String getUpdOperator()
	{
		return commonItem.getBatchUserId();
	}
	
	/**
	 * 年月日の妥当性をチェックする。
	 * @param dateTime
	 * @return boolean
	 */
	private boolean checkDate(String dateTime)
	{
		
		SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");

		format.setLenient(false);
		
		try
		{
			format.parse(dateTime);
		}
		catch(ParseException e)
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 次の進捗番号を取得する
	 * @return 進捗番号
	 * @throws Exception
	 */
	private String getNextprgNo() throws Exception
	{
		return JCCBatCommon.getFormatedNextSeq(commonItem, SEQ_NAME, PREFIX_TCHISHOUWNO, SEQ_LENGTH);
	}
	
	/**
	 * 次の異動理由番号を取得する
	 * @return 異動理由番号
	 * @throws Exception
	 */
	private String getNextidoRsnNo() throws Exception
	{
		return JCCBatCommon.getFormatedNextSeq(commonItem, SEQIDORSNNO, PREFIX_KUUHAKU, KETASUU);
	}
	
	 /**
	 * 申込書番号をキーにして、申込断面テーブルから申込書番号を取得する。
	 * @param mskmshoNo
	 * @return dmenmskmshoNo
	 * @throws Exception
	 */
	private String lockMskmDmen(String mskmshoNo) throws Exception
	{
		Object[] param = {mskmshoNo};
		JBSbatCommonDBInterface mapMskmDmen = new JBSbatCommonDBInterface();
		
		//申込断面データのレコードロック
		executeKK_T_MSKM_DMEN_KK_SELECT_001(param);
		mapMskmDmen = db_KK_T_MSKM_DMEN.selectNext();
		if(null == mapMskmDmen)
		{
			return null;
		}
		String dmenMskmshoNo = mapMskmDmen.getString("MSKMSHO_NO");

		return dmenMskmshoNo;
	}
}
