/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKRemoteSupportOptionIns
*	ソースファイル名	：JBSbatKKRemoteSupportOptionIns.java
*	作成者				：富士通　
*	作成日				：2017年05月09日
*＜機能概要＞
*　工事完了ワーク抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v32.00.00	2017/05/09  FJ)宮下		新規作成
*********************************************************************/
package eo.business.service;

import java.util.Calendar;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatKKIFM732;
import eo.business.util.table.JBSbatKK_T_KAKINS;
import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_OPSVKEI_SUPPORT;
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 富士通
*/
public class JBSbatKKRemoteSupportOptionIns extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_OP_SVC_KEI = "KK_T_OP_SVC_KEI";

	/** テーブル(オプションサービス契約<サポート>)*/
	private static final String D_TBL_NAME_KK_T_OPSVKEI_SUPPORT = "KK_T_OPSVKEI_SUPPORT";
	
	/** テーブル(課金先)*/
	private static final String D_TBL_NAME_KK_T_KAKINS = "KK_T_KAKINS";

	/** テーブルアクセスクラス(オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;
	
	/** テーブルアクセスクラス(オプションサービス契約履歴)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI_OLD = null;

	/** テーブルアクセスクラス(オプションサービス契約2世代前履歴)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI_OLD2 = null;
	
	/** テーブルアクセスクラス(オプションサービス契約<サポート>)*/
	private JBSbatSQLAccess db_KK_T_OPSVKEI_SUPPORT = null;
	
	/** テーブルアクセスクラス(オプションサービス契約<サポート>履歴)*/
	private JBSbatSQLAccess db_KK_T_OPSVKEI_SUPPORT_OLD = null;
	
	/** テーブルアクセスクラス(オプションサービス契約<サポート>2世代前履歴)*/
	private JBSbatSQLAccess db_KK_T_OPSVKEI_SUPPORT_OLD2 = null;
	
	/** テーブルアクセスクラス(課金先)*/
	private JBSbatSQLAccess db_KK_T_KAKINS = null;
	
	/** テーブルアクセスクラス(オプションサービス契約 KK_SELECT_130専用)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI_130 = null;
	
	/** テーブルアクセスクラス(オプションサービス契約 KK_SELECT_131専用)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI_131 = null;
	
	/** テーブルアクセスクラス(オプションサービス契約 KK_SELECT_132専用)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI_132 = null;
	
	/** オラクルシーケンス(オプションサービス契約番号)*/
	private static final String  SEQ_OP_SVC_KEI_NO = "SEQ_OP_SVC_KEI_NO";

	/** シーケンス（課金先番号）*/
	private static final String SEQ_KAKINS_NO = "SEQ_KAKINS_NO";

	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** SQL定義キー(KK_SELECT_130) */
	private static final String KK_T_OP_SVC_KEI_KK_SELECT_130 = "KK_SELECT_130";

	/** SQL定義キー(KK_SELECT_131) */
	private static final String KK_T_OP_SVC_KEI_KK_SELECT_131 = "KK_SELECT_131";
	
	/** SQL定義キー(KK_SELECT_132) */
	private static final String KK_T_OP_SVC_KEI_KK_SELECT_132 = "KK_SELECT_132";
	
	/**
	 * SQLKEY(KK_SELECT_132)で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_OP_SVC_KEI_KK_SELECT_132(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KK_SELECT_132);
	}
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// DBアクセスクラスを生成します
		db_KK_T_OP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		db_KK_T_OP_SVC_KEI_OLD = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		db_KK_T_OP_SVC_KEI_OLD2 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		db_KK_T_OPSVKEI_SUPPORT = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OPSVKEI_SUPPORT);
		db_KK_T_OPSVKEI_SUPPORT_OLD = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OPSVKEI_SUPPORT);
		db_KK_T_OPSVKEI_SUPPORT_OLD2 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OPSVKEI_SUPPORT);
		db_KK_T_KAKINS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAKINS);
		db_KK_T_OP_SVC_KEI_130 = new JBSbatSQLAccess(commonItem, JBSbatKK_T_OP_SVC_KEI.TABLE_NAME);
		db_KK_T_OP_SVC_KEI_131 = new JBSbatSQLAccess(commonItem, JBSbatKK_T_OP_SVC_KEI.TABLE_NAME);
		db_KK_T_OP_SVC_KEI_132 = new JBSbatSQLAccess(commonItem, JBSbatKK_T_OP_SVC_KEI.TABLE_NAME);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// システム日付の取得
		String sysDate = JCCBatCommon.getSysDateTimeStamp();
		
		// サービス契約番号を取得する
		String svcKeiNo = inMap.getString(JBSbatKKIFM732.SVC_KEI_NO);
		
		// オプションサービス契約に対象のサービス契約番号が存在しない場合、処理を実施する
		executeKK_T_OP_SVC_KEI_KK_SELECT_132(new String[]{svcKeiNo, super.opeDate});
		JBSbatCommonDBInterface opSvcKeiInfo = db_KK_T_OP_SVC_KEI.selectNext();
		if (0 == Integer.parseInt(opSvcKeiInfo.getString("CNT")))
		{
		
			// オプションサービス契約番号を採番する
			String op_svc_kei_no = JCCBatCommon.getFormatedNextSeq(super.commonItem,	SEQ_OP_SVC_KEI_NO, "", 12);
			
			// DBへ登録する(オプションサービス契約)
			this.executeKK_T_OP_SVC_KEI(inMap, op_svc_kei_no, sysDate, super.opeDate);
			
			// DBへ登録する(オプションサービス契約<サポート>)
			this.executeKK_T_OPSVKEI_SUPPORT(inMap, op_svc_kei_no, sysDate, super.opeDate);
			
			// DBへ登録する(課金先)
			this.executeKK_T_KAKINS(inMap, op_svc_kei_no, sysDate, super.opeDate);
		}
		
		super.commit();
		return null;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_OP_SVC_KEI.close();
		db_KK_T_OP_SVC_KEI_OLD.close();
		db_KK_T_OP_SVC_KEI_OLD2.close();
		db_KK_T_OPSVKEI_SUPPORT.close();
		db_KK_T_OPSVKEI_SUPPORT_OLD.close();
		db_KK_T_OPSVKEI_SUPPORT_OLD2.close();
		db_KK_T_KAKINS.close();
		db_KK_T_OP_SVC_KEI_130.close();
		db_KK_T_OP_SVC_KEI_131.close();
		db_KK_T_OP_SVC_KEI_132.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/	
	
	/**
	 * PK(全項目登録)でDBアクセスを行います。(オプションサービス契約)<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OP_SVC_KEI(JBSbatServiceInterfaceMap inMap,  String op_svc_kei_no, String sysDate, String opeDate) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		
		//固定値の設定
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_NO              ,op_svc_kei_no);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.GENE_ADD_DTM               ,sysDate);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT            ,inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT));
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.OP_SVC_CD                  ,"B021");
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PCRS_CD                    ,"B25");
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PPLAN_CD                   ,"PB2501");
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.OYA_KEI_SKBT_CD            ,"01");
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_KEI_NO                 ,inMap.getString(JBSbatKKIFM732.SVC_KEI_NO));
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_KEI_UCWK_NO            ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.HOJIN_SVC_KEI_UK_NO        ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SYSID                      ,inMap.getString(JBSbatKKIFM732.SYSID));
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.FTRIAL_KANYU_YMD           ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.FTRIAL_PRD_ENDYMD          ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.HONKANYU_YMD               ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.HONKANYU_IKO_KIGEN_YMD     ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_USE_STA_KIBO_YMD       ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.RSV_TSTA_KIBO_YMD          ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_KZKWRK_REQYMD   ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SHOSA_CL_YMD               ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SKEKKA_SEND_CD             ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.RSV_APLY_YMD               ,opeDate);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.RSV_CL_YMD                 ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.RSV_APLY_CD                ,"2");
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_END_SBT_CD            ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_CANCEL_YMD             ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_CANCEL_RSN_CD          ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STA_HMS                ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STP_RSN_CD             ,inMap.getString(JBSbatKKIFM732.SVC_STP_RSN_CD));
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STP_RLS_YMD            ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STP_RLS_RSN_CD         ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PAUSE_STP_CD               ,inMap.getString(JBSbatKKIFM732.PAUSE_STP_CD));
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_PAUSE_RSN_CD           ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_PAUSE_RSN_MEMO         ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_PAUSE_RLS_YMD          ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_PAUSE_RLS_RSN_CD       ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_PAUSE_RLS_RSN_MEMO     ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_END_HMS                ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_DLRE_CD                ,inMap.getString(JBSbatKKIFM732.SVC_DLRE_CD));
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_DLRE_MEMO              ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.DSL_TNT_USER_ID            ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_DSL_TTDKI_FIN_FLG      ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.KAIHK_YMD                  ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_CANCEL_CL_YMD          ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_DSL_CL_YMD             ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.CHRG_STA_YMD_HOSEI_UM      ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_PAUSE_CHRG_STA_YMD     ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_HKHASYMD        ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.IDO_DIV                    ,"00031");
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVCTK_BUT_DEL_TRN_JSSI_DTM ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.ADD_DTM                    ,sysDate);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.ADD_OPEACNT                ,"IKOU");
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.UPD_DTM                    ,sysDate);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.UPD_OPEACNT                ,"IKOU");
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.DEL_DTM                    ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.DEL_OPEACNT                ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.MK_FLG                     ,"0");
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.ADD_UNYO_YMD               ,opeDate);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.ADD_TRN_ID                 ,"EO2EU0310J0");
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.UPD_UNYO_YMD               ,opeDate);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.UPD_TRN_ID                 ,"EO2EU0310J0");
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.DEL_UNYO_YMD               ,null);
		setMap.setValue(JBSbatKK_T_OP_SVC_KEI.DEL_TRN_ID                 ,null);
		
		//オプションサービス契約ステータスが010〜030の場合
		if("010".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT))
			||"020".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT))
			||"030".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT)))
		{
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.MSKM_DTL_NO            ,getMskmDtlNo(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_NO), opeDate));
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_STAYMD            ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_ENDYMD            ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_STAYMD       ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_ENDYMD       ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD             ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_STAYMD        ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STP_YMD            ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_PAUSE_YMD          ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD             ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_ENDYMD        ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_DSL_YMD            ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PNLTY_HASSEI_CD        ,null);
			
			if("010".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT)))
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SHOSA_YMD          ,null);
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.DSP_SVCTK_STAYMD   ,null);
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SHOSA_DSL_FIN_CD   ,null);
			}
			else
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SHOSA_YMD          ,opeDate);
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.DSP_SVCTK_STAYMD   ,opeDate);
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SHOSA_DSL_FIN_CD   ,"1");
			}
			
			if("030".equals(inMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT)))
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.KEI_CNC_YMD        ,opeDate);
			}
			else
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.KEI_CNC_YMD        ,null);
			}
		}
		
		//オプションサービス契約ステータスが100〜220の場合
		else if("100".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT))
			   ||"210".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT))
			   ||"220".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT)))
		{
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.MSKM_DTL_NO            ,getMskmDtlNo(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_NO), opeDate));
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SHOSA_YMD              ,opeDate);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.KEI_CNC_YMD            ,opeDate);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_STAYMD            ,opeDate);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_ENDYMD            ,"20991231");
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_STAYMD       ,"20170701");
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_ENDYMD       ,"20991231");
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD             ,opeDate);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.DSP_SVCTK_STAYMD       ,opeDate);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_STAYMD        ,"20170701");
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD             ,"20991231");
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_ENDYMD        ,"20991231");
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_DSL_YMD            ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PNLTY_HASSEI_CD        ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SHOSA_DSL_FIN_CD       ,"1");
			
			if("210".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT)))
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_PAUSE_YMD      ,opeDate);
			}
			else
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_PAUSE_YMD      ,null);
			}
			
			if("220".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT)))
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STP_YMD        ,opeDate);
			}
			else
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STP_YMD        ,null);
			}
		}
		
		//オプションサービス契約ステータスが910の場合
		else
		{
			Calendar cl = Calendar.getInstance();
			String opeDateDayBefore = null;
			if (null != opeDate && opeDate.length() >= 8) {
				cl.set(Integer.parseInt(opeDate.substring(0,4)), Integer.parseInt(opeDate.substring(4,6)), 
								Integer.parseInt(opeDate.substring(6,8)));
				cl.add(Calendar.DAY_OF_MONTH, -1);
				opeDateDayBefore = String.valueOf(cl.get(Calendar.YEAR));
				if ((String.valueOf(cl.get(Calendar.MONTH))).length() > 1) {
					opeDateDayBefore = opeDateDayBefore + String.valueOf(cl.get(Calendar.MONTH));
				}
				else {
					opeDateDayBefore = opeDateDayBefore + "0" + String.valueOf(cl.get(Calendar.MONTH));
				}
				if ((String.valueOf(cl.get(Calendar.DATE))).length() > 1) {
					if ("6".equals(String.valueOf(cl.get(Calendar.MONTH))) && "31".equals(String.valueOf(cl.get(Calendar.DATE)))) {
						opeDateDayBefore = opeDateDayBefore + "30";
					}
					else {
						opeDateDayBefore = opeDateDayBefore + String.valueOf(cl.get(Calendar.DATE));
					}
					
				}
				else {
					opeDateDayBefore = opeDateDayBefore + "0" + String.valueOf(cl.get(Calendar.DATE));
				}
			}

			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.MSKM_DTL_NO            ,getMskmDtlNo910(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_NO), opeDate));
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SHOSA_YMD              ,opeDate);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.KEI_CNC_YMD            ,opeDate);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_ENDYMD            ,opeDate);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_ENDYMD       ,opeDateDayBefore);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.DSP_SVCTK_STAYMD       ,opeDate);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STP_YMD            ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_PAUSE_YMD          ,null);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD             ,opeDate);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_ENDYMD        ,opeDateDayBefore);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_DSL_YMD            ,opeDate);
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PNLTY_HASSEI_CD        ,"1");
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SHOSA_DSL_FIN_CD       ,"1");
			
			if("030".equals(inMap.getString(JBSbatKKIFM732.OLD_OP_SVC_KEI_STAT)))
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_STAYMD        ,null);
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_STAYMD   ,null);
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD         ,null);
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_STAYMD    ,null);
			}
			else
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_STAYMD        ,opeDate);
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_STAYMD   ,"20170701");
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD         ,opeDate);
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_STAYMD    ,"20170701");
			}
		}
		
		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.insertByPrimaryKeys(setMap);	
		
		//オプションサービス契約ステータスが220の場合
		if("220".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT)))
		{
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.GENE_ADD_DTM               ,"20170501000000000");
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT            ,"100");
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STP_YMD                ,"");
			
			// DBアクセスを実行します
			db_KK_T_OP_SVC_KEI_OLD.insertByPrimaryKeys(setMap);
		}
		
		if("910".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT)))
		{
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.GENE_ADD_DTM               ,"20170601000000000");
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT            ,inMap.getString(JBSbatKKIFM732.OLD_OP_SVC_KEI_STAT));
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.MSKM_DTL_NO                ,getMskmDtlNo(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_NO), opeDate));
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_DLRE_CD                ,"");
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PNLTY_HASSEI_CD            ,"");
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_DSL_YMD                ,"");
			//オプションサービス契約ステータス履歴が210の場合
			if("210".equals(inMap.getString(JBSbatKKIFM732.OLD_OP_SVC_KEI_STAT)))
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_PAUSE_YMD          ,opeDate);
			}
			else
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_PAUSE_YMD          ,"");
			}
			//オプションサービス契約ステータス履歴が220の場合
			if("220".equals(inMap.getString(JBSbatKKIFM732.OLD_OP_SVC_KEI_STAT)))
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STP_YMD            ,opeDate);
			}
			else
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STP_YMD            ,"");
			}
			
			//オプションサービス契約ステータス履歴が030の場合
			if("030".equals(inMap.getString(JBSbatKKIFM732.OLD_OP_SVC_KEI_STAT)))
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_ENDYMD            ,"");
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_ENDYMD       ,"");
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD             ,"");
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_ENDYMD        ,"");
			}
			else
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_ENDYMD            ,"20991231");
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_ENDYMD       ,"20991231");
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD             ,"20991231");
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_ENDYMD        ,"20991231");
			}
			
			// DBアクセスを実行します
			db_KK_T_OP_SVC_KEI_OLD.insertByPrimaryKeys(setMap);
			
			//オプションサービス契約ステータス履歴が220の場合
			if("220".equals(inMap.getString(JBSbatKKIFM732.OLD_OP_SVC_KEI_STAT)))
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.GENE_ADD_DTM               ,"20170501000000000");
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT            ,"100");
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.SVC_STP_YMD                ,"");
				
				// DBアクセスを実行します
				db_KK_T_OP_SVC_KEI_OLD2.insertByPrimaryKeys(setMap);
			}
		}
	
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。(オプションサービス契約<サポート>)<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OPSVKEI_SUPPORT(JBSbatServiceInterfaceMap inMap,  String op_svc_kei_no,  String sysDate, String opeDate) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.OP_SVC_KEI_NO,op_svc_kei_no);
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.GENE_ADD_DTM ,sysDate);
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.RSV_APLY_CD  ,"2");
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.ADD_DTM      ,sysDate);
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.ADD_OPEACNT  ,"IKOU");
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.UPD_DTM      ,sysDate);
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.UPD_OPEACNT  ,"IKOU");
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.DEL_DTM      ,null);
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.DEL_OPEACNT  ,null);
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.MK_FLG       ,"0");
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.ADD_UNYO_YMD ,sysDate);
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.ADD_TRN_ID   ,"EO2EU0310J0");
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.UPD_UNYO_YMD ,sysDate);
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.UPD_TRN_ID   ,"EO2EU0310J0");
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.DEL_UNYO_YMD ,null);
		setMap.setValue(JBSbatKK_T_OPSVKEI_SUPPORT.DEL_TRN_ID   ,null);
		
		// DBアクセスを実行します
		db_KK_T_OPSVKEI_SUPPORT.insertByPrimaryKeys(setMap);
		
		if("220".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT)))
		{
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.GENE_ADD_DTM              ,"20170501000000000");
		
			db_KK_T_OPSVKEI_SUPPORT_OLD.insertByPrimaryKeys(setMap);	
		}
		
		if("910".equals(inMap.getString(JBSbatKKIFM732.OP_SVC_KEI_STAT)))
		{
			setMap.setValue(JBSbatKK_T_OP_SVC_KEI.GENE_ADD_DTM              ,"20170601000000000");
		
			db_KK_T_OPSVKEI_SUPPORT_OLD.insertByPrimaryKeys(setMap);
			
			
			if("220".equals(inMap.getString(JBSbatKKIFM732.OLD_OP_SVC_KEI_STAT)))
			{
				setMap.setValue(JBSbatKK_T_OP_SVC_KEI.GENE_ADD_DTM              ,"20170501000000000");
			
				db_KK_T_OPSVKEI_SUPPORT_OLD2.insertByPrimaryKeys(setMap);	
			}
		}
	}
	
	/**
	 * PK(全項目登録)でDBアクセスを行います。(課金先)<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *
	 * </pre>
	 * <p>
	 * @param inMap 入力ファイルデータ
	 * @param op_svc_kei_no 採番したオプションサービス契約番号
	 * @param sysDate SYSTEM日時
	 * @param opeDate バッチ運用日
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KAKINS(JBSbatServiceInterfaceMap inMap, String op_svc_kei_no,
												String sysDate, String opeDate) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		
		// 課金先番号の採番
		String kakinsNo = JCCBatCommon.getFormatedNextSeq(super.commonItem, SEQ_KAKINS_NO, "", 12);
		
		setMap.setValue(JBSbatKK_T_KAKINS.KAKINS_NO, kakinsNo);
		setMap.setValue(JBSbatKK_T_KAKINS.SEIKY_KEI_NO, inMap.getString(JBSbatKKIFM732.SEIKY_KEI_NO));
		setMap.setValue(JBSbatKK_T_KAKINS.SVC_KEI_NO, null);
		setMap.setValue(JBSbatKK_T_KAKINS.SVC_KEI_UCWK_NO, null);
		setMap.setValue(JBSbatKK_T_KAKINS.KKTK_SVC_KEI_NO, null);
		setMap.setValue(JBSbatKK_T_KAKINS.OP_SVC_KEI_NO, op_svc_kei_no);
		setMap.setValue(JBSbatKK_T_KAKINS.SEIOPSVC_KEI_NO, null);
		setMap.setValue(JBSbatKK_T_KAKINS.SBOP_SVC_KEI_NO, null);
		setMap.setValue(JBSbatKK_T_KAKINS.WRIB_SVC_KEI_NO, null);
		setMap.setValue(JBSbatKK_T_KAKINS.OWNR_KEI_NO, null);
		setMap.setValue(JBSbatKK_T_KAKINS.PRC_KMK_CD, null);
		setMap.setValue(JBSbatKK_T_KAKINS.KAKINS_TSTAYMD, opeDate);
		setMap.setValue(JBSbatKK_T_KAKINS.KAKINS_TENDYMD, "20991231");
		setMap.setValue(JBSbatKK_T_KAKINS.ADD_DTM, sysDate);
		setMap.setValue(JBSbatKK_T_KAKINS.ADD_OPEACNT, "IKOU");
		setMap.setValue(JBSbatKK_T_KAKINS.UPD_DTM, sysDate);
		setMap.setValue(JBSbatKK_T_KAKINS.UPD_OPEACNT, "IKOU");
		setMap.setValue(JBSbatKK_T_KAKINS.DEL_DTM, null);
		setMap.setValue(JBSbatKK_T_KAKINS.DEL_OPEACNT, null);
		setMap.setValue(JBSbatKK_T_KAKINS.MK_FLG, "0");
		setMap.setValue(JBSbatKK_T_KAKINS.ADD_UNYO_YMD, opeDate);
		setMap.setValue(JBSbatKK_T_KAKINS.ADD_TRN_ID, "EO2EU0310J0");
		setMap.setValue(JBSbatKK_T_KAKINS.UPD_UNYO_YMD, opeDate);
		setMap.setValue(JBSbatKK_T_KAKINS.UPD_TRN_ID, "EO2EU0310J0");
		setMap.setValue(JBSbatKK_T_KAKINS.DEL_UNYO_YMD, null);
		setMap.setValue(JBSbatKK_T_KAKINS.DEL_TRN_ID, null);
		setMap.setValue(JBSbatKK_T_KAKINS.KKOP_SVC_KEI_NO, null);

		// DBアクセスを実行します
		db_KK_T_KAKINS.insertByPrimaryKeys(setMap);

	}

/**
 * 申込明細番号を返却します
 * <br>
 * @param opSvcKeiNo オプションサービス契約番号
 * @param arg1 シード値
 * @return String 変換後の文字列
 */
private String getMskmDtlNo(String opSvcKeiNo, String opeDate) throws Exception
{
	// バイント変数のリストを生成します
	JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
	paramList.setValue(opSvcKeiNo);
	paramList.setValue(opeDate);

	// DBアクセスを実行します(オプションサービス契約番号の降順で結果を取得する)
	db_KK_T_OP_SVC_KEI_130.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KK_SELECT_130);
	
	// DBから取得した申込明細番号を返却
	return db_KK_T_OP_SVC_KEI_130.selectNext().getString(JBSbatKK_T_OP_SVC_KEI.MSKM_DTL_NO);
	
}

/**
 * 申込明細番号("910"用)を返却します
 * <br>
 * @param opSvcKeiNo オプションサービス契約番号
 * @param arg1 シード値
 * @return String 変換後の文字列
 */
private String getMskmDtlNo910(String opSvcKeiNo, String opeDate) throws Exception
{
	// バイント変数のリストを生成します
	JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
	paramList.setValue(opSvcKeiNo);
	paramList.setValue(opeDate);

	// DBアクセスを実行します(オプションサービス契約番号の降順で結果を取得する)
	db_KK_T_OP_SVC_KEI_131.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KK_SELECT_131);
	
	// DBから取得した申込明細番号("910"用)を返却
	return db_KK_T_OP_SVC_KEI_131.selectNext().getString(JBSbatKK_T_OP_SVC_KEI.MSKM_DTL_NO);
	
}


}