/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKMansGEnetUpd
*	ソースファイル名	：JBSbatKKMansGEnetUpd.java
*	作成者				：FJ)柳
*	作成日				：2017年12月26日
*＜機能概要＞
*　マンションギガイーサ更新部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v35.00.00	2017/12/26  FJ)柳		【ANK-3275-00-00】【随時機能化案件】イーサ⇒ギガイーサ切り替え対応
*	v35.00.01	2018/01/17  FJ)柳		【ANK-3275-00-00】【随時機能化案件】イーサ⇒ギガイーサ切り替え対応
*	v35.00.02	2018/01/18  FJ)柳		【IT2-2018-0000002】予約適用年月日変更対応
*	v35.00.03	2018/01/22  FJ)澤田		【IT2-2018-0000003】サービス契約＜eo光ネット＞の引継対応
*	v47.00.00	2019/01/07  FJ)吉田		【OM-2019-0001192】加入契約請求料金登録不正
*   v49.00.00   2020/03/30  FJ)荒木		【ANK-3804-00-00】【eo】ギガイーサ化による日割り計算不備対応
*	v49.01.00	2020/03/31  FJ)中原		【ANK-3834-00-00】マルウェアブロッキング
*   v50.00.00   2020/08/12  FJ)澤田     【ANK-3900-00-00】マンション卸サービスの固定IPアドレス設定対応
*	v51.00.00	2020/10/29  FJ)澤田		ANK-3949-00-00 Netflix導入対応（STEP1）
*	v71.00.00	2024/06/20  FJ)渋谷		【ANK-4468-09-00】 ANK-4468-09-00_eo光ネット「シンプルプラン」追加対応
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.File;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCCbatDenshiFileUtil;
import eo.business.common.JCRBatCommon;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.common.JKKBatOutputUtil;
import eo.business.util.file.JBSbatKKLST11001;
import eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ;
import eo.business.util.table.JBSbatKK_T_KAISEN_USE_KEI;
import eo.business.util.table.JBSbatKK_T_PRG;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_EOH_NET;
import eo.business.util.table.JBSbatKK_T_SVKEI_EXC_CTRL;
import eo.business.util.table.JBSbatKK_T_TK_HSK_KEI_PRC;
import eo.business.util.table.JBSbatKU_T_KOJIAK;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCRUtilCommon;
import eo.common.util.JKKCommonUtil;
import eo.common.util.JKKStringUtil;
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;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* 画面入力情報ファイルを読み込み、対象のマンションのデータ更新を行う。<p>
* 更新処理結果をマンションギガイーサ更新処理結果ファイルに出力する。<p>
*<BR>
* @author FJ)柳
*/
public class JBSbatKKMansGEnetUpd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** テーブル(ディレイド処理依頼) */
	private static final String TBL_CC_T_DLYD_TRN_REQ = "CC_T_DLYD_TRN_REQ";
	/** テーブル(回線使用契約) */
	private static final String TBL_KK_T_KAISEN_USE_KEI = "KK_T_KAISEN_USE_KEI";
	/** テーブル(提供方式契約) */
	private static final String TBL_KK_T_TK_HOSHIKI_KEI = "KK_T_TK_HOSHIKI_KEI";
	/** テーブル(提供方式契約料金) */
	private static final String TBL_KK_T_TK_HSK_KEI_PRC = "KK_T_TK_HSK_KEI_PRC";
	/** テーブル(サービス契約) */
	private static final String TBL_KK_T_SVC_KEI = "KK_T_SVC_KEI";
	/** テーブル(工事案件) */
	private static final String TBL_KU_T_KOJIAK = "KU_T_KOJIAK";
	/** テーブル(電子ファイル管理) */
	private static final String TBL_CC_T_EFILE_KANRI = "CC_T_EFILE_KANRI";
	/** テーブル(ダウンロードファイル管理) */
	private static final String TBL_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";
	/** テーブル(サービス契約<eo光ネット>) */
	private static final String TBL_KK_T_SVC_KEI_EOH_NET = "KK_T_SVC_KEI_EOH_NET";
	/** テーブル(工事案件<eo光ネットマンション>) */
	private static final String TBL_KU_T_KJAK_EOH_NTMANS = "KU_T_KJAK_EOH_NTMANS";
	/** テーブル(マンション定額料金) */
	private static final String TBL_AC_M_MANS_TEGAKPRC = "AC_M_MANS_TEGAKPRC";
	/** テーブル(マンション違約金) */
	private static final String TBL_AC_M_MANS_PNLTY = "AC_M_MANS_PNLTY";
	/** テーブル(進捗) */
	private static final String TBL_KK_T_PRG = "KK_T_PRG";
	/** テーブル(サービス契約排他制御) */
	private static final String TBL_KK_T_SVKEI_EXC_CTRL = "KK_T_SVKEI_EXC_CTRL";
	
	/** SQL定義キー(回線使用契約　SELECT_017) */
	private static final String KK_T_KAISEN_USE_KEI_KK_SELECT_017 = "KK_SELECT_017";
	/** SQL定義キー(提供方式契約　UPDATE_002) */
	private static final String KK_T_TK_HOSHIKI_KEI_KK_UPDATE_002 = "KK_UPDATE_002";
// OM-2019-0001192 ADD START
	/** SQL定義キー(提供方式契約料金　SELECT_009) */
	private static final String KK_T_TK_HSK_KEI_PRC_KK_SELECT_009 = "KK_SELECT_009";
// OM-2019-0001192 ADD END
	/** SQL定義キー(提供方式契約料金　INSERT_002) */
	private static final String KK_T_TK_HSK_KEI_PRC_KK_INSERT_002 = "KK_INSERT_002";
	/** SQL定義キー(提供方式契約料金　UPDATE_002) */
	private static final String KK_T_TK_HSK_KEI_PRC_KK_UPDATE_002 = "KK_UPDATE_002";
	/** SQL定義キー(提供方式契約料金　UPDATE_003) */
	private static final String KK_T_TK_HSK_KEI_PRC_KK_UPDATE_003 = "KK_UPDATE_003";
	/** SQL定義キー(サービス契約　UPDATE_016) */
	private static final String KK_T_SVC_KEI_KK_UPDATE_016 = "KK_UPDATE_016";
// ANK-3275-00-00 2018/01/17 ADD START
	/** SQL定義キー(工事案件　SELECT_042) */
	private static final String KU_T_KOJIAK_KK_SELECT_042 = "KK_SELECT_042";
// ANK-3275-00-00 2018/01/17 ADD END
	/** SQL定義キー(サービス契約　SELECT_347) */
	private static final String KK_T_SVC_KEI_KK_SELECT_347 = "KK_SELECT_347";
	/** SQL定義キー(サービス契約　UPDATE_017) */
	private static final String KK_T_SVC_KEI_KK_UPDATE_017 = "KK_UPDATE_017";
	/** SQL定義キー(サービス契約　INSERT_008) */
	private static final String KK_T_SVC_KEI_KK_INSERT_008 = "KK_INSERT_008";
	/** SQL定義キー(工事案件　UPDATE_004) */
	private static final String KU_T_KOJIAK_KK_UPDATE_004 = "KK_UPDATE_004";
// ANK-3275-00-00 2018/01/17 MOD START
//	/** SQL定義キー(サービス契約　SELECT_348) */
//	private static final String KK_T_SVC_KEI_KK_SELECT_348 = "KK_SELECT_348";
	/** SQL定義キー(工事案件　SELECT_043) */
	private static final String KU_T_KOJIAK_KK_SELECT_043 = "KK_SELECT_043";
// ANK-3275-00-00 2018/01/17 MOD END
	/** SQL定義キー(サービス契約　SELECT_349) */
	private static final String KK_T_SVC_KEI_KK_SELECT_349 = "KK_SELECT_349";
	/** SQL定義キー(工事案件<eo光ネットマンション>　UPDATE_001) */
	private static final String KU_T_KJAK_EOH_NTMANS_KK_UPDATE_001 = "KK_UPDATE_001";
	/** SQL定義キー(ダウンロードファイル管理　INSERT_002) */
	private static final String ZM_T_DL_FILE_KANRI_KK_INSERT_002 = "KK_INSERT_002";
	/** SQL定義キー(マンション定額料金　DELETE_001) */
	private static final String AC_M_MANS_TEGAKPRC_KK_DELETE_001 = "KK_DELETE_001";
	/** SQL定義キー(マンション違約金　DELETE_001) */
	private static final String AC_M_MANS_PNLTY_KK_DELETE_001 = "KK_DELETE_001";
	
	/** シーケンス(進捗番号) */
	private static final String SEQ_PRG_NO = "SEQ_PRG_NO";
	
	/** DBアクセスクラス(ディレイド処理依頼) */
	private JBSbatSQLAccess db_CC_T_DLYD_TRN_REQ = null;
	/** DBアクセスクラス(回線使用契約) */
	private JBSbatSQLAccess db_KK_T_KAISEN_USE_KEI = null;
	/** DBアクセスクラス(提供方式契約) */
	private JBSbatSQLAccess db_KK_T_TK_HOSHIKI_KEI = null;
	/** DBアクセスクラス(提供方式契約料金) */
	private JBSbatSQLAccess db_KK_T_TK_HSK_KEI_PRC = null;
	/** DBアクセスクラス(サービス契約) */
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	/** DBアクセスクラス(工事案件) */
	private JBSbatSQLAccess db_KU_T_KOJIAK = null;
	/** DBアクセスクラス(電子ファイル管理) */
	private JBSbatSQLAccess db_CC_T_EFILE_KANRI = null;
	/** DBアクセスクラス(ダウンロードファイル管理) */
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	/** DBアクセスクラス(サービス契約<eo光ネット>) */
	private JBSbatSQLAccess db_KK_T_SVC_KEI_EOH_NET = null;
	/** DBアクセスクラス(工事案件<eo光ネットマンション>) */
	private JBSbatSQLAccess db_KU_T_KJAK_EOH_NTMANS = null;
	/** DBアクセスクラス(マンション定額料金) */
	private JBSbatSQLAccess db_AC_M_MANS_TEGAKPRC = null;
	/** DBアクセスクラス(マンション違約金) */
	private JBSbatSQLAccess db_AC_M_MANS_PNLTY = null;
	/** DBアクセスクラス(進捗) */
	private JBSbatSQLAccess db_KK_T_PRG = null;
	/** DBアクセスクラス(サービス契約排他制御) */
	private JBSbatSQLAccess db_KK_T_SVKEI_EXC_CTRL = null;
	
	/** 契約管理一時ファイル保存先パス */
	private static final String KK_TEMP_FILE_DIR = "KK_TEMP_FILE_DIR";
	
	/** 入力電子ファイル */
	private static final String INPUT_EFILE = "INPUT_EFILE";
	
	/** 文字コード　MS932 */
	private static final String ENCODE_MS932 = "MS932";
	
	/** 項目数　1行目 */
	private static final int KMK_CNT_1GYOME = 12;
	/** 項目数　その他 */
	private static final int KMK_CNT_OTHER = 2;
	
	/** マンションコースコード　グローバル　１００Ｍ　イーサネット */
	private static final String MANSION_COURSE_CD_GLOBAL_100M_ENET = "007";
	/** マンションコースコード　グローバル　１ギガ　イーサネット */
	private static final String MANSION_COURSE_CD_GLOBAL_1G_ENET = "008";
	
	/** 料金プランコード　グローバル　１００Ｍ　イーサーネット */
	private static final String PPLAN_CD_GLOBAL_100M_ENET = "PA5401";
	
	/** マンション料金識別コード　基本料 */
	private static final String MANS_PRC_SKBT_CD_KHRK = "001";
	/** マンション料金識別コード　事務手数料(レンタル) */
	private static final String MANS_PRC_SKBT_CD_JMTE_RENT = "010";
	/** マンション料金識別コード　標準工事費(レンタル) */
	private static final String MANS_PRC_SKBT_CD_STDARD_KOJIHI_RENT = "011";
	/** マンション料金識別コード　機器代金(レンタル) */
	private static final String MANS_PRC_SKBT_CD_KIKI_DKN_RENT = "012";
	/** マンション料金識別コード　事務手数料(買取) */
	private static final String MANS_PRC_SKBT_CD_JMTE_KAITORI = "013";
	/** マンション料金識別コード　標準工事費(買取) */
	private static final String MANS_PRC_SKBT_CD_STDARD_KOJIHI_KAITORI = "014";
	/** マンション料金識別コード　機器代金(買取) */
	private static final String MANS_PRC_SKBT_CD_KIKI_DKN_KAITORI = "015";
	
	/** 加入契約相対料金プランコード　グローバル　１００Ｍ　イーサーネット */
	private static final String KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100M_ENET = "PA5401";
	/** 加入契約相対料金プランコード　グローバル　１ギガ　イーサーネット */
	private static final String KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_1G_ENET = "PA5501";
	/** 加入契約相対料金プランコード　グローバル　１００Ｍプレミアム　イーサーネット */
	private static final String KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100MPREMIUM_ENET = "PA7001";
	
	/** ファイルコード */
	private static final String FILE_CD = "0000";
	
	/** 出力ファイル名 */
	private String outputFileNm = "";
	/** 出力ファイル定義名 */
	private String outputFileDefNm = "";
	/** 契約管理一時ファイル保存先パス */
	private String KKTmpFileDir = "";
	
	/** バッチ更新者ID */
	private String batchUserId = "";
	/** システム日時 */
	private String sysDateTimeStamp = JCCBatCommon.getSysDateTimeStamp();
	/** 運用日 */
	private String opeDate = "";
	/** 処理ID */
	private String trnId = JCCBatCommon.getTrnId();
	
	/** 料金適用開始年月日 */
	private String prcTstaymd = "";
	
	/** 出力ファイルパス */
	private String outputFilePath = "";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// フリー項目より取得
		String[] freeParam = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);
		outputFileNm = freeParam[0];		// 出力ファイル名
		outputFileDefNm = JBSbatAplConst.getAplConstValue("IND") + freeParam[1];		// 出力ファイル定義名
		
		// バッチ共通パラメータ電文より取得
		batchUserId = commonItem.getBatchUserId();
		opeDate = commonItem.getOpeDate();
		
		// DBアクセスクラス生成
		db_CC_T_DLYD_TRN_REQ = new JBSbatSQLAccess(commonItem, TBL_CC_T_DLYD_TRN_REQ);
		db_KK_T_KAISEN_USE_KEI = new JBSbatSQLAccess(commonItem, TBL_KK_T_KAISEN_USE_KEI);
		db_KK_T_TK_HOSHIKI_KEI = new JBSbatSQLAccess(commonItem, TBL_KK_T_TK_HOSHIKI_KEI);
		db_KK_T_TK_HSK_KEI_PRC = new JBSbatSQLAccess(commonItem, TBL_KK_T_TK_HSK_KEI_PRC);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, TBL_KK_T_SVC_KEI);
		db_KU_T_KOJIAK = new JBSbatSQLAccess(commonItem, TBL_KU_T_KOJIAK);
		db_CC_T_EFILE_KANRI = new JBSbatSQLAccess(commonItem, TBL_CC_T_EFILE_KANRI);
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, TBL_ZM_T_DL_FILE_KANRI);
		db_KK_T_SVC_KEI_EOH_NET = new JBSbatSQLAccess(commonItem, TBL_KK_T_SVC_KEI_EOH_NET);
		db_KU_T_KJAK_EOH_NTMANS = new JBSbatSQLAccess(commonItem, TBL_KU_T_KJAK_EOH_NTMANS);
		db_AC_M_MANS_TEGAKPRC = new JBSbatSQLAccess(commonItem, TBL_AC_M_MANS_TEGAKPRC);
		db_AC_M_MANS_PNLTY = new JBSbatSQLAccess(commonItem, TBL_AC_M_MANS_PNLTY);
		db_KK_T_PRG = new JBSbatSQLAccess(commonItem, TBL_KK_T_PRG);
		db_KK_T_SVKEI_EXC_CTRL = new JBSbatSQLAccess(commonItem, TBL_KK_T_SVKEI_EXC_CTRL);
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		// ----------
		// 初期処理
		// ----------
		begin();
		
		// -----------------------------------
		// ディレイド処理依頼情報リスト取得
		// -----------------------------------
		ArrayList<HashMap<String, Object>> shoriIraiInfoList = JKKBatCommon.getShoriIraiInfo(commonItem, super.jobid);
		// ディレイド処理依頼番号
		String dlydTrnReqNo = "";
		// ディレイド処理結果コード
		String shoriKekkaCd = JKKStrConst.DLYD_TRN_RSLT_CD_COMPLETE;		// 一旦正常のコードを設定
		// 結果リスト
		ArrayList<JBSbatServiceInterfaceMap> rsltList = new ArrayList<JBSbatServiceInterfaceMap>();
		
		try
		{
			// -----------------------------------
			// ディレイド処理依頼情報マップ取得
			// -----------------------------------
			// ディレイド処理依頼情報リストが存在する場合、1件ずつ処理する
			if (null != shoriIraiInfoList)
			{
				for (HashMap<String, Object> shoriIraiInfoMap : shoriIraiInfoList)
				{
					dlydTrnReqNo = (String)shoriIraiInfoMap.get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO);
					
					// 入力電子ファイル
					byte[] inputEFile = (byte[])shoriIraiInfoMap.get(INPUT_EFILE);
					BufferedReader br = new BufferedReader(new StringReader(new String(inputEFile, ENCODE_MS932)));
					String line = br.readLine();
					
					// 入力行カウンタ
					int inputRowNum = 0;
					boolean hasErr = false;
					
					// 取得した行が存在している場合
					if (!JKKCommonUtil.isNull(line))
					{
						while (line != null)
						{
							// 1行を項目ごとのリストに変換する
							List<String> kmkList = JCRUtilCommon.convStringToList(line);
							// -------------------------
							// マンションギガイーサ更新
							// -------------------------
							hasErr = mansGEnetUpd(dlydTrnReqNo, inputRowNum, kmkList, rsltList);
							// マンション親契約の更新の更新でエラーなった場合、処理終了する。
							if (hasErr && inputRowNum == 0)
							{
								break;
							}
							// 次の行を読み込む
							line = br.readLine();
							// カウントアップ
							inputRowNum++;
						}
					}
				}
			}
		}
		catch (Exception ex)
		{
			shoriKekkaCd = JKKStrConst.DLYD_TRN_RSLT_CD_SYS_ERR;		// システムエラーのコードを設定
			
			// エラーフラグ設定
			commonItem.setErrFlg(true);
			
			// フレームワークがエラーログにスタックトレースを出さないので、独自にエラーログ出力する
			super.logPrint.printErrMsg(JPCBatchMessageConstant.ECCB0120CE, ex, new String[]{ ex.toString() });
			
			// 終了コードを127に設定するためエラーログを出力
			super.commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECCB0120CE, new String[]{ ex.toString() });
			
			rsltList.add(setReqRslt("システムエラー発生", ex.toString()));
		}
		finally
		{
			// 終了処理
			end(dlydTrnReqNo, shoriKekkaCd, rsltList);
		}
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		// DBアクセスクラス解放
		db_CC_T_DLYD_TRN_REQ.close();
		db_KK_T_KAISEN_USE_KEI.close();
		db_KK_T_TK_HOSHIKI_KEI.close();
		db_KK_T_TK_HSK_KEI_PRC.close();
		db_KK_T_SVC_KEI.close();
		db_KU_T_KOJIAK.close();
		db_CC_T_EFILE_KANRI.close();
		db_ZM_T_DL_FILE_KANRI.close();
		db_KK_T_SVC_KEI_EOH_NET.close();
		db_KU_T_KJAK_EOH_NTMANS.close();
		db_AC_M_MANS_TEGAKPRC.close();
		db_AC_M_MANS_PNLTY.close();
		db_KK_T_PRG.close();
		db_KK_T_SVKEI_EXC_CTRL.close();
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 初期処理
	 * @throws JBSbatBusinessException
	 */
	private void begin() throws JBSbatBusinessException
	{
		// プロパティファイルから取得
		KKTmpFileDir = JBSbatAplConst.getAplConstValue(KK_TEMP_FILE_DIR);
		
		// 契約管理一時ファイル保存先パスが設定されていない場合、エラー
		if (JKKCommonUtil.isNull(KKTmpFileDir))
		{
			// 異常終了
			// プロパティーファイルの設定が正しくありません。（項目名:%1%）
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB1440KW, new String[] { KK_TEMP_FILE_DIR });
		}
		// ディレクトリが存在しない場合、エラー
		else if (!new File(KKTmpFileDir).exists())
		{
			// 異常終了
			// 指定されたパスが存在しません。（%1%）
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB1450KW, new String[] { KKTmpFileDir });
		}
		
		outputFilePath = KKTmpFileDir + File.separator;
	}
	
	/**
	 * マンションギガイーサ更新
	 * @param dlydTrnReqNo ディレイド処理依頼番号
	 * @param rowNum 行数カウンタ
	 * @param kmkList 項目ごとのリスト
	 * @param rsltList 結果リスト
	 * @return boolean true:エラー false:正常
	 * @throws Exception
	 */
	private boolean mansGEnetUpd(String dlydTrnReqNo, int rowNum, List<String> kmkList,
			ArrayList<JBSbatServiceInterfaceMap> rsltList) throws Exception
	{
		// ---------------
		// 項目数チェック
		// ---------------
		if (!checkKmkCnt(rowNum, kmkList))
		{
			// "入力ファイル項目数エラー" + 画面入力情報ファイルのエラー対象レコードの内容
			rsltList.add(setReqRslt("入力ファイル項目数エラー", convListToString(kmkList)));
			// 項目数が正しくありません。（%1%）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB1460KW, new String[] { rowNum + "行目" });
			
			return true;
		}
		
		// 1行目
		if (0 == rowNum)
		{
			// -------------------------
			// マンション親契約の更新
			// -------------------------
			updMansParentKei(dlydTrnReqNo, kmkList, rsltList);
		}
		// 2行目以降
		else
		{
			// -------------------------
			// マンション子契約の更新
			// -------------------------
			updMansChildKei(kmkList, rsltList);
		}
		
		return false;
	}
	
	/**
	 * 項目数チェック
	 * @param rowNum 行数カウンタ
	 * @param kmkList 項目ごとのリスト
	 * @return boolean true:正常 false:エラー
	 */
	private boolean checkKmkCnt(int rowNum, List<String> kmkList)
	{
		// 1行目
		if (0 == rowNum)
		{
			// 項目数が正しくない場合、エラー
			if (KMK_CNT_1GYOME != kmkList.size())
			{
				return false;
			}
		}
		// 2行目以降
		else
		{
			// 項目数が正しくない場合、エラー
			if (KMK_CNT_OTHER != kmkList.size())
			{
				return false;
			}
		}
		
		return true;
	}
	
	/**
	 * マンション親契約の更新
	 * @param dlydTrnReqNo ディレイド処理依頼番号
	 * @param kmkList 項目ごとのリスト
	 * @param rsltList 結果リスト
	 * @throws Exception
	 */
	private void updMansParentKei(String dlydTrnReqNo, List<String> kmkList,
			ArrayList<JBSbatServiceInterfaceMap> rsltList) throws Exception
	{
		// M-ID
		String mid = kmkList.get(0);
		// P-ID
		String pid = kmkList.get(1);
		// 料金コース不一致のみフラグ
		String pcrsFlg = kmkList.get(2);
		// ペアID
		String pairid = kmkList.get(3);
		// 子月額料金(1G)
		String childGtgprc1G = kmkList.get(4);
		// 親月額料金
		String parentGtgprc = kmkList.get(5);
		// 料金適用開始年月日
		prcTstaymd = kmkList.get(6);
		// 回線使用契約番号
		String kaisenUseKeiNo = kmkList.get(7);
		// 提供方式契約番号
		String tkHoshikiKeiNo = kmkList.get(8);
		// 子月額料金(100M)
		String childGtgprc100M = kmkList.get(9);
		// 契約形態
		String keiForm = kmkList.get(10);
		// 総戸数
		String ttlKosu = kmkList.get(11);
		
		// パラメータの設定
		String[] whereParam = {
				mid
		};
		
		// 回線使用契約を検索
		executeKK_T_KAISEN_USE_KEI_KK_SELECT_017(whereParam);
		
		// 結果を取得
		JBSbatCommonDBInterface kaisenUseKeiMap = new JBSbatCommonDBInterface();
		
		// 更新対象のマンション情報が取得できた場合
		if ((kaisenUseKeiMap = db_KK_T_KAISEN_USE_KEI.selectNext()) != null)
		{
			// マンションコースコード
			String mansionCourseCd = kaisenUseKeiMap.getString(JBSbatKK_T_KAISEN_USE_KEI.MANSION_COURSE_CD);
			
			// マンション親情報チェックの結果が正常である場合
			if (checkMansParentInfo(mansionCourseCd, kmkList, rsltList))
			{
				// パラメータの設定(設定値)
				String[] setParamUpdPK = {
						MANSION_COURSE_CD_GLOBAL_1G_ENET
						, pairid
				};
				
				// パラメータの設定(条件)
				String[] whereParamUpdPK = {
						kaisenUseKeiNo
				};
				
				// 回線使用契約を更新
				executeKK_T_KAISEN_USE_KEI_PKUPDATE(setParamUpdPK, whereParamUpdPK);
				
				// パラメータの設定
				String[] paramTkHoshikiKei = {
						kaisenUseKeiNo
				};
				
				// 提供方式契約を更新
				executeKK_T_TK_HOSHIKI_KEI_KK_UPDATE_002(paramTkHoshikiKei);
				
				// 加入契約相対料金プランコード
				String kanyuKeiAitaiPplanCd = "";
				
				// -------------------------
				// 提供方式契約料金(追加)
				// 1Gコース・基本料レコード
				// -------------------------
				// グローバル　１ギガ　イーサーネット
				kanyuKeiAitaiPplanCd = KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_1G_ENET;
				
				// 設定値の取得(1Gコース)
				HashMap<String, String> set1GParamMap = chgSetParam(kanyuKeiAitaiPplanCd, childGtgprc1G,
						parentGtgprc, childGtgprc100M, keiForm, ttlKosu);
				
				// システム日時(1Gコース・基本料レコードPK用) PKであるため、都度 取得する
				String sysDateTimeStampKhrk1G = JCCBatCommon.getSysDateTimeStamp();
				
				// パラメータの設定
				String[] paramTkHskKeiPrcIns001Khrk1G = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_KHRK
						, sysDateTimeStampKhrk1G
						, set1GParamMap.get(JBSbatKK_T_TK_HSK_KEI_PRC.OWNR_KEI_SEIKY_AMNT)
						, set1GParamMap.get(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_SEIKY_AMNT)
						, null
						, null
						, kanyuKeiAitaiPplanCd
						, prcTstaymd
						, JKKStrConst.END_YMD_DEFAULT
						, sysDateTimeStampKhrk1G
						, batchUserId
						, sysDateTimeStampKhrk1G
						, batchUserId
						, null
						, null
						, JKKStrConst.CD00016_0
						, opeDate
						, trnId
						, opeDate
						, trnId
						, null
						, null
				};
				
				// 提供方式契約料金へ登録
				executeKK_T_TK_HSK_KEI_PRC_PKINSERT(paramTkHskKeiPrcIns001Khrk1G);
				
				// ----------------------------------------
				// 提供方式契約料金(追加)
				// 100Mプレミアムコース・基本料レコード
				// ----------------------------------------
				// グローバル　１００Ｍプレミアム　イーサーネット
				kanyuKeiAitaiPplanCd = KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100MPREMIUM_ENET;
				
				// 設定値の取得(100Mプレミアムコース)
				HashMap<String, String> set100MPremiumParamMap = chgSetParam(kanyuKeiAitaiPplanCd, childGtgprc1G,
						parentGtgprc, childGtgprc100M, keiForm, ttlKosu);
				
				// システム日時(100Mプレミアムコース・基本料レコードPK用) PKであるため、都度 取得する
				String sysDateTimeStampKhrk100MPremium = JCCBatCommon.getSysDateTimeStamp();
				
				// パラメータの設定
				String[] paramTkHskKeiPrcIns001Khrk100MPremium = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_KHRK
						, sysDateTimeStampKhrk100MPremium
						, set100MPremiumParamMap.get(JBSbatKK_T_TK_HSK_KEI_PRC.OWNR_KEI_SEIKY_AMNT)
						, set100MPremiumParamMap.get(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_SEIKY_AMNT)
						, null
						, null
						, kanyuKeiAitaiPplanCd
						, prcTstaymd
						, JKKStrConst.END_YMD_DEFAULT
						, sysDateTimeStampKhrk100MPremium
						, batchUserId
						, sysDateTimeStampKhrk100MPremium
						, batchUserId
						, null
						, null
						, JKKStrConst.CD00016_0
						, opeDate
						, trnId
						, opeDate
						, trnId
						, null
						, null
				};
				
				// 提供方式契約料金へ登録
				executeKK_T_TK_HSK_KEI_PRC_PKINSERT(paramTkHskKeiPrcIns001Khrk100MPremium);
				
				// -------------------------------------------------------
				// 提供方式契約料金(追加)
				// 100Mプレミアムコース・事務手数料(レンタル)レコード
				// -------------------------------------------------------
				// システム日時(100Mプレミアムコース・事務手数料(レンタル)レコードPK用) PKであるため、都度 取得する
				String sysDateTimeStampJmteRent100MPremium = JCCBatCommon.getSysDateTimeStamp();
				// OM-2019-0001192 ADD START
				
				// 登録に使用する加入契約料金を取得する
				// 検索パラメータの設定
				String[] whereParamTkHskKeiPrcJmteRent100MPremiu = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_JMTE_RENT
						, KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100M_ENET
						, opeDate
				};
				
				// 提供方式契約料金を検索
				executeKK_T_TK_HSK_KEI_PRC_KK_SELECT_009(whereParamTkHskKeiPrcJmteRent100MPremiu);
				
				// 結果を取得
				JBSbatCommonDBInterface tkHskKeiPrcJmteRent100MPremiumMap = new JBSbatCommonDBInterface();
				
				// 加入契約請求料金(100Mプレミアムコース・事務手数料(レンタル))
				String kanyuKeiSeikyAmntJmteRent100MPremium = null;
				if ((tkHskKeiPrcJmteRent100MPremiumMap = db_KK_T_TK_HSK_KEI_PRC.selectNext()) != null)
				{
					kanyuKeiSeikyAmntJmteRent100MPremium = tkHskKeiPrcJmteRent100MPremiumMap.getString(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_SEIKY_AMNT);
				}
				// OM-2019-0001192 ADD END
				
				// パラメータの設定
				String[] paramTkHskKeiPrcIns001JmteRent100MPremium = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_JMTE_RENT
						, sysDateTimeStampJmteRent100MPremium
						, null
						// OM-2019-0001192 MOD START
//						, null
						, kanyuKeiSeikyAmntJmteRent100MPremium
						// OM-2019-0001192 MOD END
						, null
						, null
						, kanyuKeiAitaiPplanCd
						, prcTstaymd
						, JKKStrConst.END_YMD_DEFAULT
						, sysDateTimeStampJmteRent100MPremium
						, batchUserId
						, sysDateTimeStampJmteRent100MPremium
						, batchUserId
						, null
						, null
						, JKKStrConst.CD00016_0
						, opeDate
						, trnId
						, opeDate
						, trnId
						, null
						, null
				};
				
				// 提供方式契約料金へ登録
				executeKK_T_TK_HSK_KEI_PRC_PKINSERT(paramTkHskKeiPrcIns001JmteRent100MPremium);
				
				// -------------------------------------------------------
				// 提供方式契約料金(追加)
				// 100Mプレミアムコース・標準工事費(レンタル)レコード
				// -------------------------------------------------------
				// システム日時(100Mプレミアムコース・標準工事費(レンタル)レコードPK用) PKであるため、都度 取得する
				String sysDateTimeStampStdardKojihiRent100MPremium = JCCBatCommon.getSysDateTimeStamp();
				// OM-2019-0001192 ADD START
				
				// 登録に使用する加入契約料金を取得する
				// 検索パラメータの設定
				String[] whereParamTkHskKeiPrcStdardKojihiRent100MPremium = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_STDARD_KOJIHI_RENT
						, KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100M_ENET
						, opeDate
				};
				
				// 提供方式契約料金を検索
				executeKK_T_TK_HSK_KEI_PRC_KK_SELECT_009(whereParamTkHskKeiPrcStdardKojihiRent100MPremium);
				
				// 結果を取得
				JBSbatCommonDBInterface tkHskKeiPrcStdardKojihiRent100MPremiumMap = new JBSbatCommonDBInterface();
				
				// 加入契約請求料金(100Mプレミアムコース・事務手数料(レンタル))
				String kanyuKeiSeikyAmntStdardKojihiRent100MPremium = null;
				if ((tkHskKeiPrcStdardKojihiRent100MPremiumMap = db_KK_T_TK_HSK_KEI_PRC.selectNext()) != null)
				{
					kanyuKeiSeikyAmntStdardKojihiRent100MPremium = tkHskKeiPrcStdardKojihiRent100MPremiumMap.getString(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_SEIKY_AMNT);
				}
				// OM-2019-0001192 ADD END
				// パラメータの設定
				String[] paramTkHskKeiPrcIns001StdardKojihiRent100MPremium = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_STDARD_KOJIHI_RENT
						, sysDateTimeStampStdardKojihiRent100MPremium
						, null
						// OM-2019-0001192 MOD START
//						, null
						, kanyuKeiSeikyAmntStdardKojihiRent100MPremium
						// OM-2019-0001192 MOD END
						, null
						, null
						, kanyuKeiAitaiPplanCd
						, prcTstaymd
						, JKKStrConst.END_YMD_DEFAULT
						, sysDateTimeStampStdardKojihiRent100MPremium
						, batchUserId
						, sysDateTimeStampStdardKojihiRent100MPremium
						, batchUserId
						, null
						, null
						, JKKStrConst.CD00016_0
						, opeDate
						, trnId
						, opeDate
						, trnId
						, null
						, null
				};
				
				// 提供方式契約料金へ登録
				executeKK_T_TK_HSK_KEI_PRC_PKINSERT(paramTkHskKeiPrcIns001StdardKojihiRent100MPremium);
				
				// --------------------------------------------------
				// 提供方式契約料金(追加)
				// 100Mプレミアムコース・事務手数料(買取)レコード
				// --------------------------------------------------
				// パラメータの設定
				String[] paramTkHskKeiPrcIns001JmteKaitori100MPremium = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_JMTE_KAITORI
						, JCCBatCommon.getSysDateTimeStamp()		// PKであるため、都度 取得する
						, kanyuKeiAitaiPplanCd
						, prcTstaymd
						, JKKStrConst.END_YMD_DEFAULT
						, tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_JMTE_KAITORI
						, KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100M_ENET
						, opeDate
				};
				
				// 提供方式契約料金へ登録
				executeKK_T_TK_HSK_KEI_PRC_KK_INSERT_002(paramTkHskKeiPrcIns001JmteKaitori100MPremium);
				
				// --------------------------------------------------
				// 提供方式契約料金(追加)
				// 100Mプレミアムコース・標準工事費(買取)レコード
				// --------------------------------------------------
				// パラメータの設定
				String[] paramTkHskKeiPrcIns001StdardKojihiKaitori100MPremium = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_STDARD_KOJIHI_KAITORI
						, JCCBatCommon.getSysDateTimeStamp()		// PKであるため、都度 取得する
						, kanyuKeiAitaiPplanCd
						, prcTstaymd
						, JKKStrConst.END_YMD_DEFAULT
						, tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_STDARD_KOJIHI_KAITORI
						, KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100M_ENET
						, opeDate
				};
				
				// 提供方式契約料金へ登録
				executeKK_T_TK_HSK_KEI_PRC_KK_INSERT_002(paramTkHskKeiPrcIns001StdardKojihiKaitori100MPremium);
				
				// -------------------------
				// 提供方式契約料金(更新)
				// 基本料
				// -------------------------
				// パラメータの設定
				String[] paramTkHskKeiPrcKhrk = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_KHRK
						, KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100M_ENET
						, opeDate
				};
				
				// 提供方式契約料金を更新
				executeKK_T_TK_HSK_KEI_PRC_KK_UPDATE_002(paramTkHskKeiPrcKhrk);
				
				// -------------------------
				// 提供方式契約料金(更新)
				// 事務手数料(レンタル)
				// -------------------------
				// パラメータの設定
				String[] paramTkHskKeiPrcJmteRent = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_JMTE_RENT
						, KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100M_ENET
						, opeDate
				};
				
				// 提供方式契約料金を更新
				executeKK_T_TK_HSK_KEI_PRC_KK_UPDATE_002(paramTkHskKeiPrcJmteRent);
				
				// -------------------------
				// 提供方式契約料金(更新)
				// 標準工事費(レンタル)
				// -------------------------
				// パラメータの設定
				String[] paramTkHskKeiPrcStdardKojihiRent = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_STDARD_KOJIHI_RENT
						, KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100M_ENET
						, opeDate
				};
				
				// 提供方式契約料金を更新
				executeKK_T_TK_HSK_KEI_PRC_KK_UPDATE_002(paramTkHskKeiPrcStdardKojihiRent);
				
				// -------------------------
				// 提供方式契約料金(更新)
				// 機器代金(レンタル)
				// -------------------------
				// パラメータの設定
				String[] paramTkHskKeiPrcKikiDknRent = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_KIKI_DKN_RENT
						, opeDate
				};
				
				// 提供方式契約料金を更新
				executeKK_T_TK_HSK_KEI_PRC_KK_UPDATE_003(paramTkHskKeiPrcKikiDknRent);
				
				// -------------------------
				// 提供方式契約料金(更新)
				// 事務手数料(買取)
				// -------------------------
				// パラメータの設定
				String[] paramTkHskKeiPrcJmteKaitori = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_JMTE_KAITORI
						, KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100M_ENET
						, opeDate
				};
				
				// 提供方式契約料金を更新
				executeKK_T_TK_HSK_KEI_PRC_KK_UPDATE_002(paramTkHskKeiPrcJmteKaitori);
				
				// -------------------------
				// 提供方式契約料金(更新)
				// 標準工事費(買取)
				// -------------------------
				// パラメータの設定
				String[] paramTkHskKeiPrcStdardKojihiKaitori = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_STDARD_KOJIHI_KAITORI
						, KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100M_ENET
						, opeDate
				};
				
				// 提供方式契約料金を更新
				executeKK_T_TK_HSK_KEI_PRC_KK_UPDATE_002(paramTkHskKeiPrcStdardKojihiKaitori);
				
				// -------------------------
				// 提供方式契約料金(更新)
				// 機器代金(買取)
				// -------------------------
				// パラメータの設定
				String[] paramTkHskKeiPrcKikiDknKaitori = {
						tkHoshikiKeiNo
						, MANS_PRC_SKBT_CD_KIKI_DKN_KAITORI
						, opeDate
				};
				
				// 提供方式契約料金を更新
				executeKK_T_TK_HSK_KEI_PRC_KK_UPDATE_003(paramTkHskKeiPrcKikiDknKaitori);
				
				// パラメータの設定
				String[] paramMansTegakprc = {
						tkHoshikiKeiNo
				};
				
				// マンション定額料金を物理削除
				executeAC_M_MANS_TEGAKPRC_KK_DELETE_001(paramMansTegakprc);
				
				// パラメータの設定
				String[] paramMansPnlty = {
						tkHoshikiKeiNo
				};
				
				// マンション違約金を物理削除
				executeAC_M_MANS_PNLTY_KK_DELETE_001(paramMansPnlty);
				
				// パラメータの設定
				String[] paramSvcKei = {
						tkHoshikiKeiNo
						, opeDate
				};
				
				// サービス契約を更新
				executeKK_T_SVC_KEI_KK_UPDATE_016(paramSvcKei);
				
				// ANK-3275-00-00 2018/01/17 ADD START
				// パラメータの設定
				String[] whereParam042 = {
						tkHoshikiKeiNo
						, opeDate
				};
				
				// 工事案件を検索
				executeKU_T_KOJIAK_KK_SELECT_042(whereParam042);
				
				// 結果を取得
				JBSbatCommonDBInterface kojiakMap = new JBSbatCommonDBInterface();
				
				// 結果取得分
				while ((kojiakMap = db_KU_T_KOJIAK.selectNext()) != null)
				{
					// パラメータの設定
					String[] paramKjakEohNtmansUpd = {
							kojiakMap.getString(JBSbatKU_T_KOJIAK.KOJIAK_NO)
					};
					
					// 工事案件<eo光ネットマンション>を更新
					executeKU_T_KJAK_EOH_NTMANS_KK_UPDATE_001(paramKjakEohNtmansUpd);
				}
				// ANK-3275-00-00 2018/01/17 ADD END
				
				// 親契約のサービス契約番号
				String parentSvcKeiNo = "";
				
				// サービス契約を検索
				executeKK_T_SVC_KEI_KK_SELECT_349(paramSvcKei);
				
				// 結果を取得
				JBSbatCommonDBInterface parentSvckeiMap = new JBSbatCommonDBInterface();
				
				// 結果取得分
				while ((parentSvckeiMap = db_KK_T_SVC_KEI.selectNext()) != null)
				{
					parentSvcKeiNo = parentSvckeiMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);
					
					// パラメータの設定(設定値)
					String[] setParamUpdSvkeiExcCtrlPK = {
							JBSbatDateUtil.getSystemDateTimeStamp()
					};
					
					// パラメータの設定(条件)
					String[] whereParamUpdSvkeiExcCtrlPK = {
							parentSvcKeiNo
					};
					
					// サービス契約排他制御を更新
					executeKK_T_SVKEI_EXC_CTRL_PKUPDATE(setParamUpdSvkeiExcCtrlPK, whereParamUpdSvkeiExcCtrlPK);
				}
				
				// 正常終了 + 画面入力情報ファイルの1行目の内容
				rsltList.add(setReqRslt("正常終了", convListToString(kmkList)));
				
				// コミット(親契約用)
				super.commit();
			}
		}
		// 更新対象のマンション情報が取得できなかった場合、エラー
		else
		{
			// "マンション情報取得エラー" + 画面入力情報ファイルの1行目の内容
			rsltList.add(setReqRslt("マンション情報取得エラー",  convListToString(kmkList)));
			
			// %1%情報が取得できませんでした。 %2%
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB1470KW, new String[] { "マンション親", mid });
		}
	}
	
	/**
	 * マンション親情報チェック
	 * @param mansionCourseCd マンションコースコード
	 * @param kmkList 項目ごとのリスト
	 * @param rsltList 結果リスト
	 * @return boolean true:正常 false:エラー
	 * @throws Exception
	 */
	private boolean checkMansParentInfo(String mansionCourseCd, List<String> kmkList,
			ArrayList<JBSbatServiceInterfaceMap> rsltList) throws Exception
	{
		// マンションコースコードが007(グローバル　１００Ｍ　イーサネット)以外の場合、エラー
		if (!MANSION_COURSE_CD_GLOBAL_100M_ENET.equals(mansionCourseCd))
		{
			// "マンション情報更新済み" + 画面入力情報ファイルの1行目の内容
			rsltList.add(setReqRslt("マンション情報更新済み", convListToString(kmkList)));

			// 該当データが既に更新されています。（テーブル名：%1% キー：%2%）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB1500KW,
					new String[] { TBL_KK_T_KAISEN_USE_KEI, mansionCourseCd });
			
			return false;
		}
		
		return true;
	}
	
	/**
	 * 設定値の変更
	 * @param kanyuKeiAitaiPplanCd 加入契約相対料金プランコード
	 * @param childGtgprc1G 子月額料金(1G)
	 * @param parentGtgprc 親月額料金
	 * @param childGtgprc100M 子月額料金(100M)
	 * @param keiForm 契約形態
	 * @param ttlKosu 総戸数
	 * @return setParamMap 設定値マップ
	 */
	private HashMap<String, String> chgSetParam(String kanyuKeiAitaiPplanCd, String childGtgprc1G,
			String parentGtgprc, String childGtgprc100M, String keiForm, String ttlKosu)
	{
		// 設定値マップ
		HashMap<String, String> setParamMap = new HashMap<String, String>();
		
		// 加入契約相対料金プランコードがグローバル　１ギガ　イーサーネットの場合
		if (KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_1G_ENET.equals(kanyuKeiAitaiPplanCd))
		{
			// ベースの場合
			if (JBSbatKKConst.KEI_PAY_HOSHIKI_CD_BASE.equals(keiForm))
			{
				setParamMap.put(JBSbatKK_T_TK_HSK_KEI_PRC.OWNR_KEI_SEIKY_AMNT, parentGtgprc);		// オーナー契約請求金額
			}
			// 個別の場合
			else if (JBSbatKKConst.KEI_PAY_HOSHIKI_CD_KOBETSU.equals(keiForm))
			{
				setParamMap.put(JBSbatKK_T_TK_HSK_KEI_PRC.OWNR_KEI_SEIKY_AMNT, null);		// オーナー契約請求金額
			}
			// 全戸一括の場合
			else if (JBSbatKKConst.KEI_PAY_HOSHIKI_CD_ZENKO.equals(keiForm))
			{
				setParamMap.put(JBSbatKK_T_TK_HSK_KEI_PRC.OWNR_KEI_SEIKY_AMNT, null);		// オーナー契約請求金額
			}
			
// ANK-3804-00-00 MOD START
//			// 共通
//			setParamMap.put(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_SEIKY_AMNT, childGtgprc1G);		// 加入契約請求金額

			// 子月額料金(1G)に0が入力された場合はnullを登録する
			if ("0".equals(childGtgprc1G))
			{
				setParamMap.put(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_SEIKY_AMNT, null);		// 加入契約請求金額
			}
			// 0以外の場合は子月額料金(1G)に入力された値を登録する
			else
			{
				setParamMap.put(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_SEIKY_AMNT, childGtgprc1G);		// 加入契約請求金額
			}
// ANK-3804-00-00 MOD END
		}
		// 加入契約相対料金プランコードがグローバル　１００Ｍプレミアム　イーサーネットの場合
		else if (KANYU_KEI_AITAI_PPLAN_CD_GLOBAL_100MPREMIUM_ENET.equals(kanyuKeiAitaiPplanCd))
		{
			// ベースの場合
			if (JBSbatKKConst.KEI_PAY_HOSHIKI_CD_BASE.equals(keiForm))
			{
				setParamMap.put(JBSbatKK_T_TK_HSK_KEI_PRC.OWNR_KEI_SEIKY_AMNT, parentGtgprc);		// オーナー契約請求金額
				setParamMap.put(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_SEIKY_AMNT, childGtgprc100M);		// 加入契約請求金額
			}
			// 個別の場合
			else if (JBSbatKKConst.KEI_PAY_HOSHIKI_CD_KOBETSU.equals(keiForm))
			{
				setParamMap.put(JBSbatKK_T_TK_HSK_KEI_PRC.OWNR_KEI_SEIKY_AMNT, null);		// オーナー契約請求金額
				setParamMap.put(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_SEIKY_AMNT, childGtgprc100M);		// 加入契約請求金額
			}
			// 全戸一括の場合
			else if (JBSbatKKConst.KEI_PAY_HOSHIKI_CD_ZENKO.equals(keiForm))
			{
				// 前後空白文字削除
				parentGtgprc = JPCUtilCommon.trim(parentGtgprc);
				ttlKosu = JPCUtilCommon.trim(ttlKosu);
				
				// 値が未設定の場合、"0"とする(親月額料金)
				if (JKKCommonUtil.isNull(parentGtgprc))
				{
					parentGtgprc = "0";
				}
				// 値が未設定の場合、"0"とする(総戸数)
				if (JKKCommonUtil.isNull(ttlKosu))
				{
					ttlKosu = "0";
				}
				
				int ownrKeiSeikyAmnt = Integer.parseInt(parentGtgprc) * Integer.parseInt(ttlKosu);
				setParamMap.put(JBSbatKK_T_TK_HSK_KEI_PRC.OWNR_KEI_SEIKY_AMNT, String.valueOf(ownrKeiSeikyAmnt));		// オーナー契約請求金額
				setParamMap.put(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_SEIKY_AMNT, null);		// 加入契約請求金額
			}
		}
		
		return setParamMap;
	}
	
	/**
	 * マンション子契約の更新
	 * @param kmkList 項目ごとのリスト
 	 * @param rsltList 結果リスト
	 * @throws Exception
	 */
	private void updMansChildKei(List<String> kmkList, ArrayList<JBSbatServiceInterfaceMap> rsltList) throws Exception
	{
		// サービス契約番号
		String svcKeiNo = kmkList.get(0);
		// レコード更新年月日時分秒
		String recUpdDtm = kmkList.get(1);
		
		// パラメータの設定
		String[] whereParam347 = {
				svcKeiNo
				, opeDate
		};
		
		// サービス契約を検索
		executeKK_T_SVC_KEI_KK_SELECT_347(whereParam347);
		
		// サービス契約ステータス
		String svcKeiStat = "";
		// 料金プランコード
		String pplanCd = "";
		// IT2-2018-0000003 2018/01/22 ADD START
		// 固定IPアドレス引継ぎ有無
		String koteiIpAdHktgiUm = "";
		// PCパック有無
		String pcPackUm = "";
		// お客様NOVA利用有無
		String custNovaUseUm = "";
		// IT2-2018-0000003 2018/01/22 ADD END
		// ANK-3834-00-00 2020/03/31 ADD START
		// マルウェアブロッキング無しフラグ
		String MalwareBlockingNonFlg = "";
		// ANK-3834-00-00 2020/03/31 ADD END
		// ANK-3900-00-00 ADD START
		String koteiApAd8 = "";
		// ANK-3900-00-00 ADD END
		// ANK-3949-00-00 ADD START
		String ptnracntId = "";
		// ANK-3949-00-00 ADD END
		// ANK-4468-09-00 ADD START
		String nrkemtSvckeiNo = "";
		// ANK-4468-09-00 ADD END
		// 結果を取得
		JBSbatCommonDBInterface svcKeiMap = new JBSbatCommonDBInterface();
		
		// 更新対象のマンション情報が取得できた場合
		if ((svcKeiMap = db_KK_T_SVC_KEI.selectNext()) != null)
		{
			svcKeiStat = svcKeiMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
			pplanCd = svcKeiMap.getString(JBSbatKK_T_SVC_KEI.PPLAN_CD);
			// IT2-2018-0000003 2018/01/22 ADD START
			koteiIpAdHktgiUm = svcKeiMap.getString(JBSbatKK_T_SVC_KEI_EOH_NET.KOTEI_IP_AD_HKTGI_UM);
			pcPackUm = svcKeiMap.getString(JBSbatKK_T_SVC_KEI_EOH_NET.PC_PACK_UM);
			custNovaUseUm = svcKeiMap.getString(JBSbatKK_T_SVC_KEI_EOH_NET.CUST_NOVA_USE_UM);
			// IT2-2018-0000003 2018/01/22 ADD END
			// ANK-3834-00-00 2020/03/31 ADD START
			MalwareBlockingNonFlg = svcKeiMap.getString(JBSbatKK_T_SVC_KEI_EOH_NET.MALWARE_BLOCKING_NON_FLG);
			// ANK-3834-00-00 2020/03/31 ADD END
			// ANK-3900-00-00 ADD START
			koteiApAd8 = svcKeiMap.getString(JBSbatKK_T_SVC_KEI_EOH_NET.KOTEI_IP_AD_8);
			// ANK-3900-00-00 ADD END
			// ANK-3949-00-00 ADD START
			ptnracntId = svcKeiMap.getString(JBSbatKK_T_SVC_KEI_EOH_NET.PTNRACNT_ID);
			// ANK-3949-00-00 ADD END
			// ANK-4468-09-00 ADD START
			nrkemtSvckeiNo = svcKeiMap.getString(JBSbatKK_T_SVC_KEI_EOH_NET.NRKEMT_SVKEI_NO);
			// ANK-4468-09-00 ADD END
			// -------------------------
			// 更新処理可否チェック
			// -------------------------
			// 排他チェック、サービス契約ステータスチェック、料金プランコードチェックの結果が正常である場合、更新処理
			if (checkExc(svcKeiNo, kmkList, recUpdDtm, rsltList) &&
					checkSvcKeiStat(svcKeiNo, svcKeiStat, kmkList, rsltList) &&
					checkPplanCd(pplanCd, kmkList, rsltList))
			{
				// サービス契約ステータスが100(サービス提供中)の場合
				if (JKKBatConst.CD_SBT_SVC_KEI_STAT_100.equals(svcKeiStat))
				{
					String[] paramSvcKeiUpd = {
							JBSbatDateUtil.adjustDate(prcTstaymd, -1)
							, JBSbatDateUtil.adjustDate(prcTstaymd, -1)
							, svcKeiNo
							, opeDate
					};
					
					// サービス契約を更新
					executeKK_T_SVC_KEI_KK_UPDATE_017(paramSvcKeiUpd);
				}
				// パラメータの設定
// ANK-3804-00-00 ADD START
				// サービス開始年月日
				String svcStaYmd = svcKeiMap.getString(JBSbatKK_T_SVC_KEI.SVC_STA_YMD);
				// サービス開始年月
				String svcStaYm = null;
				if (svcStaYmd != null)
				{
					svcStaYm = svcStaYmd.substring(0,6);
				}
				// 料金適用開始年月
				String prcTstaym = prcTstaymd.substring(0,6);
				// プラン開始年月日
				String planStaymd = "";
				// プラン課金開始年月日
				String planChrgStaymd = "";
				
				// サービス開始年月日がギガイーサ化処理当月の場合、コピー元の値を設定
				if (svcStaYm != null && svcStaYm.equals(prcTstaym))
				{
					planStaymd = svcKeiMap.getString(JBSbatKK_T_SVC_KEI.PLAN_STAYMD);
					planChrgStaymd = svcKeiMap.getString(JBSbatKK_T_SVC_KEI.PLAN_CHRG_STAYMD);
				}
				// 画面入力情報ファイルの1行目の「料金適用開始年月日」を設定
				else
				{
					planStaymd = prcTstaymd;
					planChrgStaymd = prcTstaymd;
				}
// ANK-3804-00-00 ADD END
				
				String[] paramSvcKeiIns = {
						sysDateTimeStamp
// ANK-3804-00-00 MOD START
//						, prcTstaymd
//						, prcTstaymd
						, planStaymd
						, planChrgStaymd
// ANK-3804-00-00 MOD END
// IT2-2018-0000002 2018/01/17 MOD START
//						, prcTstaymd
						, opeDate
// IT2-2018-0000002 2018/01/17 MOD END
						, svcKeiNo
						, opeDate
				};
				
				// サービス契約へ登録
				executeKK_T_SVC_KEI_KK_INSERT_008(paramSvcKeiIns);
				
				// パラメータの設定
				String[] paramSvcKeiEohNetIns = {
						svcKeiNo
						, sysDateTimeStamp
						// IT2-2018-0000003 2018/01/22 MOD START
						//, JKKStrConst.CD_DIV_UM_NASHI
						//, JKKStrConst.CD_DIV_UM_NASHI
						//, JKKStrConst.CD_DIV_UM_NASHI
						, koteiIpAdHktgiUm
						, pcPackUm
						, custNovaUseUm
						// IT2-2018-0000003 2018/01/22 MOD END
						, JKKStrConst.CD00343_2
						, sysDateTimeStamp
						, batchUserId
						, sysDateTimeStamp
						, batchUserId
						, null
						, null
						, JKKStrConst.CD00016_0
						, opeDate
						, trnId
						, opeDate
						, trnId
						, null
						, null
						// ANK-3834-00-00 2020/03/31 ADD START
						, MalwareBlockingNonFlg
						// ANK-3834-00-00 2020/03/31 ADD END
						// ANK-3900-00-00 ADD START
						, koteiApAd8
						// ANK-3900-00-00 ADD END
						// ANK-3949-00-00 ADD START
						, ptnracntId
						// ANK-3949-00-00 ADD END
						// ANK-4468-09-00 ADD START
						,nrkemtSvckeiNo
						// ANK-4468-09-00 ADD END
				};
				
				// サービス契約<eo光ネット>へ登録
				executeKK_T_SVC_KEI_EOH_NET_PKINSERT(paramSvcKeiEohNetIns);
				
				// サービス契約ステータスが100(サービス提供中)の場合
				if (JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStat))
				{
					// IT2-2018-0000002 2018/01/17 ADD START
					// システム年月日時分秒からシステム時分秒を取得
					String timeStamp = sysDateTimeStamp.substring(sysDateTimeStamp.length() - 9);
					// IT2-2018-0000002 2018/01/17 ADD END
					
					// パラメータの設定
					String[] paramPrgIns = {
							JCCBatCommon.getFormatedNextSeq(commonItem, SEQ_PRG_NO, "", 12)
							, null
							, null
							, null
							, null
							, svcKeiNo
							, null
							, null
							, null
							, null
							, null
							, null
							, null
							, JBSbatKKConst.CD00576_IDO_DIV_00033
							, sysDateTimeStamp
							, JKKStrConst.CD00647_SVC_INF_TEISE_FIN
// IT2-2018-0000002 2018/01/17 MOD START
//							, sysDateTimeStamp
							, opeDate + timeStamp
// IT2-2018-0000002 2018/01/17 MOD END
							, null
							, "マンションギガイーサ更新"
							, null
							, sysDateTimeStamp
							, batchUserId
							, sysDateTimeStamp
							, batchUserId
							, null
							, null
							, JKKStrConst.CD00016_0
							, opeDate
							, trnId
							, opeDate
							, trnId
							, null
							, null
					};
					
					// 進捗へ登録
					executeKK_T_PRG_PKINSERT(paramPrgIns);
				}
				
				// パラメータの設定
				String[] paramKojiakUpd = {
						svcKeiNo
				};
				
				// 工事案件を更新
				executeKU_T_KOJIAK_KK_UPDATE_004(paramKojiakUpd);
				
// ANK-3275-00-00 2018/01/17 MOD START
//				// パラメータの設定
//				String[] whereParam348 = {
//						svcKeiNo
//						, opeDate
//						, opeDate
//						, opeDate
//				};
//				
//				// サービス契約を検索
//				executeKK_T_SVC_KEI_KK_SELECT_348(whereParam348);
//				
//				// 結果を取得
//				JBSbatCommonDBInterface eohtlMap = new JBSbatCommonDBInterface();
//				
//				// 取得したサービス契約番号に紐づくｅｏ光電話のレコードが存在する場合
//				if ((eohtlMap = db_KK_T_SVC_KEI.selectNext()) != null)
//				{
//					// パラメータの設定
//					String[] paramKjakEohNtmansUpd = {
//							eohtlMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO)
//					};
//					
//					// 工事案件<eo光ネットマンション>を更新
//					executeKU_T_KJAK_EOH_NTMANS_KK_UPDATE_001(paramKjakEohNtmansUpd);
//				}
				
				// パラメータの設定
				String[] whereParam043 = {
						svcKeiNo
				};
				
				// 工事案件を検索
				executeKU_T_KOJIAK_KK_SELECT_043(whereParam043);
				
				// 結果を取得
				JBSbatCommonDBInterface kojiakMap = new JBSbatCommonDBInterface();
				
				// 結果取得分
				while ((kojiakMap = db_KU_T_KOJIAK.selectNext()) != null)
				{
					// パラメータの設定
					String[] paramKjakEohNtmansUpd = {
							kojiakMap.getString(JBSbatKU_T_KOJIAK.KOJIAK_NO)
					};
					
					// 工事案件<eo光ネットマンション>を更新
					executeKU_T_KJAK_EOH_NTMANS_KK_UPDATE_001(paramKjakEohNtmansUpd);
				}
// ANK-3275-00-00 2018/01/17 MOD END
				
				// パラメータの設定(設定値)
				String[] setParamUpdSvkeiExcCtrlPK = {
						JBSbatDateUtil.getSystemDateTimeStamp()
				};
				
				// パラメータの設定(条件)
				String[] whereParamUpdSvkeiExcCtrlPK = {
						svcKeiNo
				};
				
				// サービス契約排他制御を更新
				executeKK_T_SVKEI_EXC_CTRL_PKUPDATE(setParamUpdSvkeiExcCtrlPK, whereParamUpdSvkeiExcCtrlPK);
				
				// コミット(子契約用)
				super.commit();
			}
		}
	}
	
	/**
	 * SQLKEY(KK_SELECT_017)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			MID
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KAISEN_USE_KEI_KK_SELECT_017(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		// 件数分設定
		for (int i = 0; i < param.length; i++)
		{
			paramList.setValue(param[i]);
		}
		
		// DBアクセスを実行します
		db_KK_T_KAISEN_USE_KEI.selectBySqlDefine(paramList, KK_T_KAISEN_USE_KEI_KK_SELECT_017);
	}
	
	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *			MANSION_COURSE_CD
	 *			PAIRID
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *			KAISEN_USE_KEI_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KAISEN_USE_KEI_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue(JBSbatKK_T_KAISEN_USE_KEI.MANSION_COURSE_CD, setParam[0]);
		setMap.setValue(JBSbatKK_T_KAISEN_USE_KEI.PAIRID, setParam[1]);
		
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue(JBSbatKK_T_KAISEN_USE_KEI.KAISEN_USE_KEI_NO, whereParam[0]);
		
		// DBアクセスを実行します
		db_KK_T_KAISEN_USE_KEI.updateByPrimaryKeys(whereMap, setMap);
	}
	
	/**
	 * SQLKEY(KK_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			KAISEN_USE_KEI_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_TK_HOSHIKI_KEI_KK_UPDATE_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		
		// DBアクセスを実行します
		db_KK_T_TK_HOSHIKI_KEI.executeBySqlDefine(paramList, KK_T_TK_HOSHIKI_KEI_KK_UPDATE_002);
	}
	
	// OM-2019-0001192 ADD START
	/**
	 * SQLKEY(KK_SELECT_009)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			TK_HOSHIKI_KEI_NO
	 *			MANS_PRC_SKBT_CD
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_TK_HSK_KEI_PRC_KK_SELECT_009(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());
		
		// DBアクセスを実行します
		db_KK_T_TK_HSK_KEI_PRC.selectBySqlDefine(paramList, KK_T_TK_HSK_KEI_PRC_KK_SELECT_009);
	}
	// OM-2019-0001192 ADD END
	
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *			提供方式契約番号				TK_HOSHIKI_KEI_NO
	 *			マンション料金識別コード				MANS_PRC_SKBT_CD
	 *			世代登録年月日時分秒				GENE_ADD_DTM
	 *			オーナー契約請求金額				OWNR_KEI_SEIKY_AMNT
	 *			加入契約請求金額				KANYU_KEI_SEIKY_AMNT
	 *			機器提供種別コード				KKTK_SBT_CD
	 *			宅内機器種別コード				TAKNKIKI_SBT_CD
	 *			加入契約相対料金プランコード				KANYU_KEI_AITAI_PPLAN_CD
	 *			請求金額適用開始年月日				SEIKY_AMNT_TSTAYMD
	 *			請求金額適用終了年月日				SEIKY_AMNT_TENDYMD
	 *			登録年月日時分秒				ADD_DTM
	 *			登録オペレータアカウント				ADD_OPEACNT
	 *			更新年月日時分秒				UPD_DTM
	 *			更新オペレータアカウント				UPD_OPEACNT
	 *			削除年月日時分秒				DEL_DTM
	 *			削除オペレータアカウント				DEL_OPEACNT
	 *			無効フラグ				MK_FLG
	 *			登録運用年月日				ADD_UNYO_YMD
	 *			登録処理ID				ADD_TRN_ID
	 *			更新運用年月日				UPD_UNYO_YMD
	 *			更新処理ID				UPD_TRN_ID
	 *			削除運用年月日				DEL_UNYO_YMD
	 *			削除処理ID				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_TK_HSK_KEI_PRC_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.TK_HOSHIKI_KEI_NO, setParam[0]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.MANS_PRC_SKBT_CD, setParam[1]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.GENE_ADD_DTM, setParam[2]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.OWNR_KEI_SEIKY_AMNT, setParam[3]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_SEIKY_AMNT, setParam[4]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.KKTK_SBT_CD, setParam[5]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.TAKNKIKI_SBT_CD, setParam[6]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_AITAI_PPLAN_CD, setParam[7]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.SEIKY_AMNT_TSTAYMD, setParam[8]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.SEIKY_AMNT_TENDYMD, setParam[9]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.ADD_DTM, setParam[10]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.ADD_OPEACNT, setParam[11]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.UPD_DTM, setParam[12]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.UPD_OPEACNT, setParam[13]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.DEL_DTM, setParam[14]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.DEL_OPEACNT, setParam[15]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.MK_FLG, setParam[16]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.ADD_UNYO_YMD, setParam[17]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.ADD_TRN_ID, setParam[18]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.UPD_UNYO_YMD, setParam[19]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.UPD_TRN_ID, setParam[20]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.DEL_UNYO_YMD, setParam[21]);
		setMap.setValue(JBSbatKK_T_TK_HSK_KEI_PRC.DEL_TRN_ID, setParam[22]);
	
		// DBアクセスを実行します
		db_KK_T_TK_HSK_KEI_PRC.insertByPrimaryKeys(setMap);
	}
	
	/**
	 * SQLKEY(KK_INSERT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			TK_HOSHIKI_KEI_NO
	 *			MANS_PRC_SKBT_CD
	 *			GENE_ADD_DTM
	 *			KANYU_KEI_AITAI_PPLAN_CD
	 *			SEIKY_AMNT_TSTAYMD
	 *			SEIKY_AMNT_TENDYMD
	 *			TK_HOSHIKI_KEI_NO
	 *			MANS_PRC_SKBT_CD
	 *			KANYU_KEI_AITAI_PPLAN_CD
	 *			OPE_DATE
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_TK_HSK_KEI_PRC_KK_INSERT_002(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());

		// DBアクセスを実行します
		db_KK_T_TK_HSK_KEI_PRC.executeBySqlDefine(paramList, KK_T_TK_HSK_KEI_PRC_KK_INSERT_002);
	}
	
	/**
	 * SQLKEY(KK_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			TK_HOSHIKI_KEI_NO
	 *			MANS_PRC_SKBT_CD
	 *			KANYU_KEI_AITAI_PPLAN_CD
	 *			OPE_DATE
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_TK_HSK_KEI_PRC_KK_UPDATE_002(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());
		
		// DBアクセスを実行します
		db_KK_T_TK_HSK_KEI_PRC.executeBySqlDefine(paramList, KK_T_TK_HSK_KEI_PRC_KK_UPDATE_002);
	}
	
	/**
	 * SQLKEY(KK_UPDATE_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			TK_HOSHIKI_KEI_NO
	 *			MANS_PRC_SKBT_CD
	 *			OPE_DATE
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_TK_HSK_KEI_PRC_KK_UPDATE_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_KK_T_TK_HSK_KEI_PRC.executeBySqlDefine(paramList, KK_T_TK_HSK_KEI_PRC_KK_UPDATE_003);
	}
	
	/**
	 * SQLKEY(KK_DELETE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			TK_HOSHIKI_KEI_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeAC_M_MANS_TEGAKPRC_KK_DELETE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		
		// DBアクセスを実行します
		db_AC_M_MANS_TEGAKPRC.executeBySqlDefine(paramList, AC_M_MANS_TEGAKPRC_KK_DELETE_001);
	}
	
	/**
	 * SQLKEY(KK_DELETE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			TK_HOSHIKI_KEI_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeAC_M_MANS_PNLTY_KK_DELETE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		
		// DBアクセスを実行します
		db_AC_M_MANS_PNLTY.executeBySqlDefine(paramList, AC_M_MANS_PNLTY_KK_DELETE_001);
	}
	
	/**
	 * SQLKEY(KK_UPDATE_016)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			TK_HOSHIKI_KEI_NO
	 *			OPE_DATE
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_UPDATE_016(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.executeBySqlDefine(paramList, KK_T_SVC_KEI_KK_UPDATE_016);
	}
	
	// ANK-3275-00-00 2018/01/17 ADD START
	/**
	 * SQLKEY(KK_SELECT_042)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			TK_HOSHIKI_KEI_NO
	 *			OPE_DATE
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKU_T_KOJIAK_KK_SELECT_042(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		// 件数分設定
		for (int i = 0; i < param.length; i++)
		{
			paramList.setValue(param[i]);
		}
		
		// DBアクセスを実行します
		db_KU_T_KOJIAK.selectBySqlDefine(paramList, KU_T_KOJIAK_KK_SELECT_042);
	}
	// ANK-3275-00-00 2018/01/17 ADD END
	
	/**
	 * SQLKEY(KK_SELECT_349)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			TK_HOSHIKI_KEI_NO
	 *			OPE_DATE
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_349(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		// 件数分設定
		for (int i = 0; i < param.length; i++)
		{
			paramList.setValue(param[i]);
		}
		
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_349);
	}
	
	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *			LAST_UPD_DTM
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *			SVC_KEI_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVKEI_EXC_CTRL_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue(JBSbatKK_T_SVKEI_EXC_CTRL.LAST_UPD_DTM, setParam[0]);
		
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue(JBSbatKK_T_SVKEI_EXC_CTRL.SVC_KEI_NO, whereParam[0]);
		
		// DBアクセスを実行します
		db_KK_T_SVKEI_EXC_CTRL.updateByPrimaryKeys(whereMap, setMap);
	}
	
	/**
	 * SQLKEY(KK_SELECT_347)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			SVC_KEI_NO
	 *			UPD_DTM
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_347(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		// 件数分設定
		for (int i = 0; i < param.length; i++)
		{
			paramList.setValue(param[i]);
		}
		
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_347);
	}
	
	/**
	 * SQLKEY(KK_UPDATE_017)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			PLAN_ENDYMD
	 *			PLAN_CHRG_ENDYMD
	 *			SVC_KEI_NO
	 *			OPE_DATE
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_UPDATE_017(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());
		
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.executeBySqlDefine(paramList, KK_T_SVC_KEI_KK_UPDATE_017);
	}
	
	/**
	 * SQLKEY(KK_INSERT_008)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			GENE_ADD_DTM
	 *			PLAN_STAYMD
	 *			PLAN_CHRG_STAYMD
	 *			RSV_APLY_YMD
	 *			SVC_KEI_NO
	 *			OPE_DATE
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_INSERT_008(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());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.executeBySqlDefine(paramList, KK_T_SVC_KEI_KK_INSERT_008);
	}
	
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *			サービス契約番号				SVC_KEI_NO
	 *			世代登録年月日時分秒				GENE_ADD_DTM
	 *			固定IPアドレス引継ぎ有無				KOTEI_IP_AD_HKTGI_UM
	 *			PCパック有無				PC_PACK_UM
	 *			お客様NOVA利用有無				CUST_NOVA_USE_UM
	 *			予約適用コード				RSV_APLY_CD
	 *			登録年月日時分秒				ADD_DTM
	 *			登録オペレータアカウント				ADD_OPEACNT
	 *			更新年月日時分秒				UPD_DTM
	 *			更新オペレータアカウント				UPD_OPEACNT
	 *			削除年月日時分秒				DEL_DTM
	 *			削除オペレータアカウント				DEL_OPEACNT
	 *			無効フラグ				MK_FLG
	 *			登録運用年月日				ADD_UNYO_YMD
	 *			登録処理ID				ADD_TRN_ID
	 *			更新運用年月日				UPD_UNYO_YMD
	 *			更新処理ID				UPD_TRN_ID
	 *			削除運用年月日				DEL_UNYO_YMD
	 *			削除処理ID				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_EOH_NET_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.SVC_KEI_NO, setParam[0]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.GENE_ADD_DTM, setParam[1]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.KOTEI_IP_AD_HKTGI_UM, setParam[2]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.PC_PACK_UM, setParam[3]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.CUST_NOVA_USE_UM, setParam[4]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.RSV_APLY_CD, setParam[5]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.ADD_DTM, setParam[6]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.ADD_OPEACNT, setParam[7]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.UPD_DTM, setParam[8]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.UPD_OPEACNT, setParam[9]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.DEL_DTM, setParam[10]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.DEL_OPEACNT, setParam[11]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.MK_FLG, setParam[12]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.ADD_UNYO_YMD, setParam[13]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.ADD_TRN_ID, setParam[14]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.UPD_UNYO_YMD, setParam[15]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.UPD_TRN_ID, setParam[16]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.DEL_UNYO_YMD, setParam[17]);
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.DEL_TRN_ID, setParam[18]);
		// ANK-3834-00-00 2020/03/31 ADD START
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.MALWARE_BLOCKING_NON_FLG, setParam[19]);
		// ANK-3834-00-00 2020/03/31 ADD END
		// ANK-3900-00-00 ADD START
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.KOTEI_IP_AD_8, setParam[20]);
		// ANK-3900-00-00 ADD END
		// ANK-3949-00-00 ADD START
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.PTNRACNT_ID, setParam[21]);
		// ANK-3949-00-00 ADD END
		// ANK-4468-09-00 ADD START
		setMap.setValue(JBSbatKK_T_SVC_KEI_EOH_NET.NRKEMT_SVKEI_NO, setParam[22]);
		// ANK-4468-09-00 ADD END
		
		// DBアクセスを実行します
		db_KK_T_SVC_KEI_EOH_NET.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
	 *			進捗特記事項1				PRG_TKJK_1
	 *			進捗特記事項2				PRG_TKJK_2
	 *			登録年月日時分秒				ADD_DTM
	 *			登録オペレータアカウント				ADD_OPEACNT
	 *			更新年月日時分秒				UPD_DTM
	 *			更新オペレータアカウント				UPD_OPEACNT
	 *			削除年月日時分秒				DEL_DTM
	 *			削除オペレータアカウント				DEL_OPEACNT
	 *			無効フラグ				MK_FLG
	 *			登録運用年月日				ADD_UNYO_YMD
	 *			登録処理ID				ADD_TRN_ID
	 *			更新運用年月日				UPD_UNYO_YMD
	 *			更新処理ID				UPD_TRN_ID
	 *			削除運用年月日				DEL_UNYO_YMD
	 *			削除処理ID				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(JBSbatKK_T_PRG.PRG_NO, setParam[0]);
		setMap.setValue(JBSbatKK_T_PRG.MSKM_DTL_NO, setParam[1]);
		setMap.setValue(JBSbatKK_T_PRG.SEIKY_KEI_NO, setParam[2]);
		setMap.setValue(JBSbatKK_T_PRG.SEIKY_WAY_NO_KOZA, setParam[3]);
		setMap.setValue(JBSbatKK_T_PRG.SEIKY_WAY_NO_CRECARD, setParam[4]);
		setMap.setValue(JBSbatKK_T_PRG.SVC_KEI_NO, setParam[5]);
		setMap.setValue(JBSbatKK_T_PRG.SVC_KEI_UCWK_NO, setParam[6]);
		setMap.setValue(JBSbatKK_T_PRG.SVC_KEI_KAISEN_UCWK_NO, setParam[7]);
		setMap.setValue(JBSbatKK_T_PRG.KKTK_SVC_KEI_NO, setParam[8]);
		setMap.setValue(JBSbatKK_T_PRG.OP_SVC_KEI_NO, setParam[9]);
		setMap.setValue(JBSbatKK_T_PRG.SEIOPSVC_KEI_NO, setParam[10]);
		setMap.setValue(JBSbatKK_T_PRG.SBOP_SVC_KEI_NO, setParam[11]);
		setMap.setValue(JBSbatKK_T_PRG.WRIB_SVC_KEI_NO, setParam[12]);
		setMap.setValue(JBSbatKK_T_PRG.IDO_DIV, setParam[13]);
		setMap.setValue(JBSbatKK_T_PRG.IDO_DTM, setParam[14]);
		setMap.setValue(JBSbatKK_T_PRG.PRG_STAT, setParam[15]);
		setMap.setValue(JBSbatKK_T_PRG.PRG_DTM, setParam[16]);
		setMap.setValue(JBSbatKK_T_PRG.PRG_MEMO, setParam[17]);
		setMap.setValue(JBSbatKK_T_PRG.PRG_TKJK_1, setParam[18]);
		setMap.setValue(JBSbatKK_T_PRG.PRG_TKJK_2, setParam[19]);
		setMap.setValue(JBSbatKK_T_PRG.ADD_DTM, setParam[20]);
		setMap.setValue(JBSbatKK_T_PRG.ADD_OPEACNT, setParam[21]);
		setMap.setValue(JBSbatKK_T_PRG.UPD_DTM, setParam[22]);
		setMap.setValue(JBSbatKK_T_PRG.UPD_OPEACNT, setParam[23]);
		setMap.setValue(JBSbatKK_T_PRG.DEL_DTM, setParam[24]);
		setMap.setValue(JBSbatKK_T_PRG.DEL_OPEACNT, setParam[25]);
		setMap.setValue(JBSbatKK_T_PRG.MK_FLG, setParam[26]);
		setMap.setValue(JBSbatKK_T_PRG.ADD_UNYO_YMD, setParam[27]);
		setMap.setValue(JBSbatKK_T_PRG.ADD_TRN_ID, setParam[28]);
		setMap.setValue(JBSbatKK_T_PRG.UPD_UNYO_YMD, setParam[29]);
		setMap.setValue(JBSbatKK_T_PRG.UPD_TRN_ID, setParam[30]);
		setMap.setValue(JBSbatKK_T_PRG.DEL_UNYO_YMD, setParam[31]);
		setMap.setValue(JBSbatKK_T_PRG.DEL_TRN_ID, setParam[32]);
	
		// DBアクセスを実行します
		db_KK_T_PRG.insertByPrimaryKeys(setMap);
	}
	
// ANK-3275-00-00 2018/01/17 DEL START
//	/**
//	 * SQLKEY(KK_SELECT_348)でDBアクセスを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数でバイント変数を設定します。<br>
//	 *
//	 * 2.DBアクセスを実行します。<br>
//	 * 
//	 * 3.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
//	 *			SVC_KEI_NO
//	 *			OPE_DATE
//	 *			OPE_DATE
//	 *			OPE_DATE
//	 * </pre>
//	 * <p>
//	 * @param param バイント変数の値配列。
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private void executeKK_T_SVC_KEI_KK_SELECT_348(Object[] param) throws Exception
//	{
//		// バイント変数のリストを生成します
//		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//		
//		// 件数分設定
//		for (int i = 0; i < param.length; i++)
//		{
//			paramList.setValue(param[i]);
//		}
//		
//		// DBアクセスを実行します
//		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_348);
//	}
// ANK-3275-00-00 2018/01/17 DEL END
	
	/**
	 * SQLKEY(KK_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			KOJIAK_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKU_T_KJAK_EOH_NTMANS_KK_UPDATE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		
		// DBアクセスを実行します
		db_KU_T_KJAK_EOH_NTMANS.executeBySqlDefine(paramList, KU_T_KJAK_EOH_NTMANS_KK_UPDATE_001);
	}
	
	/**
	 * SQLKEY(KK_UPDATE_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			RNKI_SVC_KEI_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKU_T_KOJIAK_KK_UPDATE_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		
		// DBアクセスを実行します
		db_KU_T_KOJIAK.executeBySqlDefine(paramList, KU_T_KOJIAK_KK_UPDATE_004);
	}
	
	// ANK-3275-00-00 2018/01/17 ADD START
	/**
	 * SQLKEY(KK_SELECT_043)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			SVC_KEI_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKU_T_KOJIAK_KK_SELECT_043(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		// 件数分設定
		for (int i = 0; i < param.length; i++)
		{
			paramList.setValue(param[i]);
		}
		
		// DBアクセスを実行します
		db_KU_T_KOJIAK.selectBySqlDefine(paramList, KU_T_KOJIAK_KK_SELECT_043);
	}
	// ANK-3275-00-00 2018/01/17 ADD END
	
	/**
	 * SQLKEY(KK_INSERT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			TRN_KANRI_NO
	 *			FILE_NM
	 *			DATA_CNT
	 *			EFILE_KANRI_NO
	 *			GENE_ADD_DTM
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_T_DL_FILE_KANRI_KK_INSERT_002(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());
		
		// DBアクセスを実行します
		db_ZM_T_DL_FILE_KANRI.executeBySqlDefine(paramList, ZM_T_DL_FILE_KANRI_KK_INSERT_002);
	}
	
	/**
	 * 終了処理
	 * @param dlydTrnReqNo ディレイド処理依頼番号
	 * @param dlydTrnRsltCd ディレイド処理結果コード
	 * @param rsltList 結果リスト
	 * @throws Exception
	 */
	private void end(String dlydTrnReqNo, String dlydTrnRsltCd, ArrayList<JBSbatServiceInterfaceMap> rsltList) throws Exception
	{
		// ---------------------------------------------
		// マンションギガイーサ更新処理結果ファイル出力
		// ---------------------------------------------
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		if(!JKKStringUtil.isNullEmpty(rsltList))
		{
			for (JBSbatServiceInterfaceMap outMap : rsltList) {
				outMap.setOutFlg(true);
				outputBean.addOutMapList(outMap);
			}
		}
		
		// マンションギガイーサ更新処理結果ファイルを出力する
		JKKBatOutputUtil.editOutFile(super.commonItem, outputBean, "KKLST11001", outputFilePath, outputFileNm);
		
		// --------------------
		// 処理依頼結果登録
		// --------------------
		if(!JKKStringUtil.isNullEmpty(dlydTrnReqNo))
		{
			addTrnReqRslt(dlydTrnReqNo, dlydTrnRsltCd, rsltList.size());
		}
		
		// --------------------
		// 一時ファイル削除
		// --------------------
		JCRUtilCommon.deleteTempFile(outputFilePath + outputFileNm);
	}
	
	/**
	 * 処理依頼結果登録
	 * @param dlydTrnReqNo ディレイド処理依頼番号
	 * @param dlydTrnRsltCd ディレイド処理結果コード
	 * @param outputRowNum 結果ファイル数
	 * @throws Exception
	 */
	private void addTrnReqRslt(String dlydTrnReqNo, String dlydTrnRsltCd, int outputRowNum) throws Exception
	{
		// --------------------
		// 処理依頼結果登録
		// --------------------
		// ディレイド処理依頼結果更新
		JCRBatCommon.updateShoriIraiResult(commonItem, dlydTrnReqNo, dlydTrnRsltCd, null);
		
		// 電子ファイル管理登録
		// ダウンロードファイル管理登録
		addEfileKanriDlFileKanri(outputRowNum, FILE_CD, JBSbatDateUtil.adjustMonth(opeDate, 1), outputFileNm);
		
		// コミット(処理依頼結果登録用)
		super.commit();
	}
	
	/**
	 * 排他チェック
	 * @param svcKeiNo サービス契約番号
	 * @param kmkList 項目ごとのリスト
	 * @param recUpdDtm 最終更新年月日]
	 * @param rsltList 結果リスト
	 * @return boolean true:正常 false:エラー
	 * @throws Exception
	 */
	private boolean checkExc(String svcKeiNo, List<String> kmkList, String recUpdDtm,
			ArrayList<JBSbatServiceInterfaceMap> rsltList) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue(JBSbatKK_T_SVKEI_EXC_CTRL.SVC_KEI_NO, svcKeiNo);
		
		// DBアクセスを実行します
		JBSbatCommonDBInterface svkeiExcCtrlMap = db_KK_T_SVKEI_EXC_CTRL.selectByPrimaryKeysForUpdateWait(whereMap);
		
		// 結果が取得できない場合、エラー
		if (null == svkeiExcCtrlMap)
		{
			// "排他チェックエラー" + 画面入力情報ファイルの2行目以降(該当レコード)の内容
			rsltList.add(setReqRslt("排他チェックエラー", convListToString(kmkList)));
			
			// データが他の人に更新されています。（%1%）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB1480KW, new String[] { svcKeiNo });
			
			return false;
		}
		
		String lastUpdDtmStrAf = JBSbatStringUtil.Rtrim((String)svkeiExcCtrlMap.getValue(JBSbatKK_T_SVKEI_EXC_CTRL.LAST_UPD_DTM));
		
		// タイムスタンプチェック
		if (!lastUpdDtmStrAf.equals(recUpdDtm))
		{
			// "排他チェックエラー" + 画面入力情報ファイルの2行目以降(該当レコード)の内容
			rsltList.add(setReqRslt("排他チェックエラー", convListToString(kmkList)));
			
			// データが他の人に更新されています。（%1%）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB1480KW, new String[] { svcKeiNo });
			
			return false;
		}
		
		return true;
	}
	
	/**
	 * サービス契約ステータスチェック
	 * @param svcKeiNo サービス契約番号
	 * @param svcKeiStat サービス契約ステータス
	 * @param kmkList 項目ごとのリスト
	 * @param rsltList 結果リスト
	 * @return boolean true:正常 false:エラー
	 * @throws Exception
	 */
	private boolean checkSvcKeiStat(String svcKeiNo, String svcKeiStat, List<String> kmkList,
			ArrayList<JBSbatServiceInterfaceMap> rsltList) throws Exception
	{
		// サービス契約ステータスが210(休止・中断中) または 220(停止中) または
		// サービス契約ステータスが910(解約済)の場合、エラー
		if (JKKBatConst.CD_SBT_SVC_KEI_STAT_210.equals(svcKeiStat) ||
				JKKBatConst.CD_SBT_SVC_KEI_STAT_220.equals(svcKeiStat) ||
				JKKBatConst.CD_SBT_SVC_KEI_STAT_910.equals(svcKeiStat))
		{
			// "サービス契約ステータスエラー" + 画面入力情報ファイルの2行目以降(該当レコード)の内容
			rsltList.add(setReqRslt("サービス契約ステータスエラー", convListToString(kmkList)));

			// サービス契約の契約状態が不正です。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB1490KW);
			
			return false;
		}
		
		return true;
	}
	
	/**
	 * 料金プランコードチェック
	 * @param pplanCd 料金プランコード
	 * @param kmkList 項目ごとのリスト
	 * @param rsltList 結果リスト
	 * @return boolean true:正常 false:エラー
	 * @throws Exception
	 */
	private boolean checkPplanCd(String pplanCd, List<String> kmkList, ArrayList<JBSbatServiceInterfaceMap> rsltList) throws Exception
	{
		// 料金プランコードがPA5401(グローバル　１００Ｍ　イーサーネット)以外の場合、エラー
		if (!PPLAN_CD_GLOBAL_100M_ENET.equals(pplanCd))
		{
			// "サービス契約情報更新済み" + 画面入力情報ファイルの2行目以降(該当レコード)の内容
			rsltList.add(setReqRslt("サービス契約情報更新済み", convListToString(kmkList)));

			// 該当データが既に更新されています。（テーブル名：%1% キー：%2%）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB1500KW,
					new String[] { TBL_KK_T_SVC_KEI, pplanCd });
			
			return false;
		}
		
		return true;
	}
	
	/**
	 * 電子ファイル管理・ダウンロードファイル管理へ登録します。
	 * <br>
	 * @param dataCnt データ件数
	 * @param fileCd ファイルコード
	 * @param fileDelYmd ファイル削除年月日
	 * @param dlFileNm ダウンロードファイル名
	 * @throws Exception 例外が発生した場合
	 */
	private void addEfileKanriDlFileKanri(int dataCnt, String fileCd,
			String fileDelYmd, String dlFileNm) throws Exception
	{
		// 電子ファイル管理登録
		String[] ret = JCCbatDenshiFileUtil.createDenshiFile(commonItem, fileCd,
				outputFilePath + outputFileNm, fileDelYmd);
		
		// ダウンロードファイル管理登録
		String[] paramIns = {
				JKKStrConst.TRAN_KANRI_NO_MANS_GENET_UPD_TRN_RSLT		// 処理管理番号
				, dlFileNm												// ダウンロードファイル名
				, String.valueOf(dataCnt)								// データ件数
				, ret[0]												// 電子ファイル管理番号
				, ret[1]												// 世代登録年月日時分秒
		};
		
		executeZM_T_DL_FILE_KANRI_KK_INSERT_002(paramIns);
	}
	
	/**
	 * 結果ファイル内容をマップオブジェクトへ設定する。<br>
	 * @param msg メッセージ
	 * @param dataInfo レコード情報
	 * @return JBSbatServiceInterfaceMap 出力ファイル記載内容１件分
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private JBSbatServiceInterfaceMap setReqRslt(String msg, String dataInfo) throws Exception
	{
		JBSbatServiceInterfaceMap result = new JBSbatServiceInterfaceMap();
		
		// メッセージ
		result.set(JBSbatKKLST11001.MSG, msg);
		// データ情報
		result.set(JBSbatKKLST11001.DATA_INFO, dataInfo);
		
		result.setOutFlg(true);
		
		return result;
	}
	
	/**
	 * リストの結合を追加
	 * @param kmkList 項目ごとのリスト
	 * @return str 取り出した値
	 */
	private String convListToString(List<String> kmkList)
	{
		String str = "";
		
		for(int i = 0; i < kmkList.size(); i++)
		{
			if (i != 0)
			{
				str = str + ",";
			}
			str = str + (String)kmkList.get(i);
		}
		
		return str;
	}
}
