/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKyoseiMadoguchiFlgUpd
*	ソースファイル名	：JBSbatKKKyoseiMadoguchiFlgUpd.java
*	作成者				：富士通　
*	作成日				：2011年09月16日
*＜機能概要＞
*　強制窓口変更更新処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/22  FJ)古田		新規作成
*	v2.00.00	2012/05/09  FJ)倉上		【ST2-2012-0000871】障害対応。
*	v3.00.00	2012/09/11  FJ)倉上		【ST2-2012-0001663】障害対応。
*	v3.01.00	2012/11/23  FJ)柳		【TAI-2012-0000095】対応
*	v4.00.00	2013/03/07  FJ)柳		【IT1-2013-0000405】スキマ変更対応
*	v4.00.01	2013/11/21  FJ)古内		【OM-2013-0002863】強制窓口フラグを予約へも適用する。
*	v15.00.00	2015/07/17  FJ)杉本		【OM-2015-0000482】障害対応。
*	v20.00.00	2015/10/19  FJ)黒田(耕)	【ANK-2073-00-00】支払方法変更時のメール通知機能の追加。
*	v41.00.00	2019/02/04  FJ)星野		【ANK-3396-00-00】利用停止スケジュールの変更
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JKKBatCommon;
import eo.business.util.file.JBSbatKKIFM114;
import eo.business.util.table.JBSbatKK_T_SEIKY_KEI;
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.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author FJ)古田
*/
public class JBSbatKKKyoseiMadoguchiFlgUpd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(請求契約)*/
	private static final String D_TBL_NAME_KK_T_SEIKY_KEI = "KK_T_SEIKY_KEI";

	
	/** SQL定義キー(KK_UPDATE_006)*/
	private static final String KK_T_SEIKY_KEI_KK_UPDATE_006 = "KK_UPDATE_006";
	
	// ++++++++++++++++++ v15.00.00 追加開始 ++++++++++++++++++
	/** SQL定義キー(KK_SELECT_019)*/
	private static final String KK_T_SEIKY_KEI_KK_SELECT_019 = "KK_SELECT_019";
	// ++++++++++++++++++ v15.00.00 追加終了 ++++++++++++++++++
	/** テーブルアクセスクラス(請求契約)*/
	private JBSbatSQLAccess db_KK_T_SEIKY_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 削除対象外ファイル名格納変数（ファイルパス）*/
	private Map<String, String> warningMap = null;
	
	/**
	 * 強制窓口フラグ（エラー）
	 */
	private static final String KYO_MADO_FLG_ERR = "9";
	
	/**
	 * ワーニングの件数カウンタ
	 */
	private int warning_cnt = 0;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		warningMap = new HashMap<String, String>();

		// DBアクセスクラスを生成します
		db_KK_T_SEIKY_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIKY_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
		super.logPrint.printDebugLog("execute_START");

		// [0]:強制窓口変更用中間ファイル
		String in_file_path = super.commonItem.getFreeItem().split(";")[0];

		// 強制窓口変更対象抽出より出力されたデータを取得します。
		ArrayList<ArrayList<String>> updateList = convCsvFiletoList(in_file_path);

		// １行のデータを格納する変数
		ArrayList<String> lineData = null;

		// ファイルに更新対象データが存在するかチェックします。
		for (int i = 0; i < updateList.size(); i++)
		{
			lineData = updateList.get(i);

			super.logPrint.printDebugLog("連携データ----Start");
			super.logPrint.printDebugLog("請求契約番号[" + lineData.get(0) + "]");
			super.logPrint.printDebugLog("世代登録年月日時分秒[" + lineData.get(1) + "]");
			super.logPrint.printDebugLog("強制窓口フラグ[" + lineData.get(2) + "]");
			super.logPrint.printDebugLog("ファイルパス[" + lineData.get(3) + "]");
			super.logPrint.printDebugLog("連携データ----End");

			// 強制窓口フラグがすべてエラー（9）の場合ワーニング出力を行います。
			if(KYO_MADO_FLG_ERR.equals(lineData.get(2)))
			{
				warningMap.put(lineData.get(3), "");
			}
		}

		lineData = null;

		// 検索条件Map
		JBSbatCommonDBInterface updSeikyKeiMap = null;
		// 検索結果Map
		JBSbatCommonDBInterface outDbMap = null;

		// 対象データを更新します。
		for (int i = 0; i < updateList.size(); i++)
		{
			lineData = updateList.get(i);
			// ++++++++++++++++++ v15.00.00 追加開始 ++++++++++++++++++
			// 請求契約番号
			String seikyKeiNo = lineData.get(0);
			
			// 世代登録年月日時分秒
			String geneAddDtm = lineData.get(1);
			
			// 請求契約テーブルに排他制御処理を実行する
			JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
			
			// 請求契約番号
			whereMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_NO, seikyKeiNo);
			
			// 世代登録年月日時分秒
			whereMap.setValue(JBSbatKK_T_SEIKY_KEI.GENE_ADD_DTM, geneAddDtm);
			
			// 請求契約排他制御
			JBSbatCommonDBInterface dbInfoCheck = db_KK_T_SEIKY_KEI.selectByPrimaryKeysForUpdateWait(whereMap);
			
			if(null == dbInfoCheck)
			{
				super.logPrint.printDebugLog("排他エラーが発生しました。{請求契約番号:" + seikyKeiNo + "}");
				
				// MSG 請求契約テーブルに該当する請求契約情報が存在しません。
				throw new JBSbatBusinessException("EKKB0210CE", new String[]{"請求契約", "該当する請求契約情報"});
			}
			
			// 存在チェックを実行します。
			String[] selectParam01 = { seikyKeiNo, super.commonItem.getOpeDate() };
			executeKK_T_SEIKY_KEI_KK_SELECT_019(selectParam01);

			super.logPrint.printDebugLog("SQL - KK_T_SEIKY_KEI_KK_SELECT_019 実行");

			// 検索結果取得
			JBSbatCommonDBInterface outMap = new JBSbatCommonDBInterface();
			outMap = db_KK_T_SEIKY_KEI.selectNext();
			
			if(outMap == null)
			{
				// 検索結果がない場合、ワーニングを出力
				super.logPrint.printBusinessErrorLog("EKKB0010CW", new String[] { "請求契約データ未存在" });
				// MSG 請求契約テーブルに該当する請求契約情報が存在しません。
				throw new JBSbatBusinessException("EKKB0210CE", new String[]{"請求契約", "該当する請求契約情報"});
			}
			
			// 世代登録年月日時分秒
			geneAddDtm = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_SEIKY_KEI.GENE_ADD_DTM));
			// ++++++++++++++++++ v15.00.00 追加終了 ++++++++++++++++++
			// 強制窓口フラグがエラー（9）の場合、 削除対象外ファイル名格納変数にファイルパスを格納
			if(KYO_MADO_FLG_ERR.equals(lineData.get(2)))
			{
				warningMap.put(lineData.get(3), "");
			}
			else
			{
				// 更新対象データをロック検索します。
				updSeikyKeiMap = new JBSbatCommonDBInterface();
				
				// 請求契約のデータを取得します。
				// ++++++++++++++++++ v15.00.00 変更開始 ++++++++++++++++++
				//updSeikyKeiMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_NO, lineData.get(0));  
				updSeikyKeiMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_NO, seikyKeiNo);
				//updSeikyKeiMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_NO, lineData.get(0));  
				updSeikyKeiMap.setValue(JBSbatKK_T_SEIKY_KEI.GENE_ADD_DTM, geneAddDtm);
				// ++++++++++++++++++ v15.00.00 変更終了 ++++++++++++++++++
				outDbMap = db_KK_T_SEIKY_KEI.selectByPrimaryKeysForUpdateWait(updSeikyKeiMap);
				
				if(outDbMap == null)
				{
					//super.logPrint.printDebugLog("★★★★請求契約データが存在しません。請求契約番号[" + lineData.get(0) + "]世代登録年月日時分秒[" + lineData.get(1) + "]");  
					super.logPrint.printDebugLog("★★★★請求契約データが存在しません。請求契約番号[" + lineData.get(0) + "]世代登録年月日時分秒[" + geneAddDtm + "]");
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog("EKKB0010CW", new String[] { "請求契約データ未存在" });
					warningMap.put(lineData.get(3), "");
					warning_cnt++;
				}
				else
				{
					// すでに更新する値と同じ場合、ワーニングを出力し、削除対象外ファイル名格納変数にファイルパスを格納ます。
					if(lineData.get(2).equals(getNullToBlank(outDbMap.getString(JBSbatKK_T_SEIKY_KEI.KYOSEI_MADOGUCHI_FLG))))
					{
						//super.logPrint.printDebugLog("★★★★ワーニング発生 請求契約番号[" + lineData.get(0) + "]世代登録年月日時分秒[" + lineData.get(1) + "]");  
						super.logPrint.printDebugLog("★★★★ワーニング発生 請求契約番号[" + lineData.get(0) + "]世代登録年月日時分秒[" + geneAddDtm + "]");
						super.logPrint.printBusinessErrorLog("EKKB0310JW", new String[] { "請求契約テーブル", "強制窓口フラグ", "請求契約番号:" + lineData.get(0) });
						warningMap.put(lineData.get(3), "");
						warning_cnt++;
					}
					else
					{
						// ++++++++++++++++++ v4.00.01 変更開始 ++++++++++++++++++
						// 更新処理を行います。
						if (updateSeikyKei(outDbMap, lineData))
						{
							JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
							paramList.setValue(lineData.get(2));
							paramList.setValue(lineData.get(0));
							paramList.setValue(super.opeDate);
							
							// 予約データに対し、更新を行います。
							db_KK_T_SEIKY_KEI.executeBySqlDefine(paramList, KK_T_SEIKY_KEI_KK_UPDATE_006);
						}
						// ++++++++++++++++++ v4.00.01 変更終了 ++++++++++++++++++
					}
				}
			}
		}

		if(0 < warning_cnt)
		{
			super.commonItem.setErrorCount(warning_cnt);
		}

		super.logPrint.printDebugLog("execute_END");
		return null;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("terminal_START");
		
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_SEIKY_KEI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		// [0]:強制窓口変更用中間ファイル
		String out_file_path = super.commonItem.getFreeItem().split(";")[1];

		super.logPrint.printDebugLog("ファイル出力先[" + out_file_path + "]");

		if(warningMap == null)
		{
			warningMap = new HashMap<String, String>();
		}

		// ワーニングが発生しているファイルパスを出力します。
		String[] key_list = warningMap.keySet().toArray(new String[0]);

		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		// 入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outmap = null;

		for (int i = 0; i < key_list.length; i++)
		{

			super.logPrint.printDebugLog("削除対象外ファイル[" + key_list[i] + "]");
			outmap = new JBSbatServiceInterfaceMap();

			outmap.setString(JBSbatKKIFM114.FILE_PATH, key_list[i]);
			// 出力フラグを設定
			outmap.setOutFlg(true);
			// 出力共通電文に入出力インターフェースを設定する。
			outputBean.addOutMapList(outmap);
		}

		// ファイルを出力します。
		JKKBatCommon.outFile(super.commonItem, outputBean, "KKIFM114", out_file_path, "KKIFM114001.csv");

		
		super.logPrint.printDebugLog("terminal_END");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 引数で指定されたCSVファイル名からファイルの内容を一行ずつ読取り、カンマ区切りの文字を
	 * List格納する。格納した行データのArrayListをArrayList配列に順番に格納し返却する。
	 * 引数で指定されたファイルパスを取得し、返却する。
	 * @param commonItem バッチ共通パラメータ電文
	 * @param fileName ファイル名(パスを含む)
	 * @return ArrayList ファイル内データを格納したリスト
	 * @throws Exception 例外
	 */
	private ArrayList<ArrayList<String>> convCsvFiletoList(String fileName) throws Exception
	{

		ArrayList<ArrayList<String>> csvFileList = new ArrayList<ArrayList<String>>();

		// CSV指定ファイルパスチェック
		if(null == fileName || ("").equals(fileName))
		{
			// エラーの場合空文字を返す。
			throw new JBSbatBusinessException("EKKB0130CE", new String[]{"読込ファイルパス未設定"});
		}

		BufferedReader br = null;
		try
		{

			// CSV指定ファイル読込み
			br = new BufferedReader(new FileReader(new File(fileName)));
			ArrayList<String> workList = null;
			String lineData = "";

			while (null != lineData)
			{
				// ワークリストを初期化
				workList = new ArrayList<String>();

				// CSVファイル一行読込み
				lineData = br.readLine();
				if(null != lineData && !("").equals(lineData))
				{

					// リストに格納された一行分のファイルデータを格納
					workList = convStringToList(lineData);
					csvFileList.add(workList);
				}
			}
		}
		catch (IOException e)
		{
			// 例外処理
			throw new JBSbatBusinessException("EKKB0100AE", new String[]{fileName});
		} finally {
			if(br != null) {
				br.close();
			}
		}

		return csvFileList;
	}
	
	/**
	 * 引数で指定されたCSVファイルの一行データを項目ごとにArrayList格納する。
	 * @param commonItem バッチ共通パラメータ電文
	 * @param lineData 一行分のCSVデータ
	 * @return ArrayList 項目ごとにCSVデータを格納したList
	 * @throws Exception 例外
	 **/
	private ArrayList<String> convStringToList(String lineData) throws Exception
	{

		// 戻り値格納用List
		ArrayList<String> resultList = new ArrayList<String>();

		// CSV指定ファイル読込み
		// 文字列リスト変換エスケープ処理に囲み文字の"を指定して呼出す。
		resultList = convEscapeStringToList(lineData, '"');

		return resultList;

	}
	
	/**
	 * 引数で指定されたCSVファイルの一行データを項目ごとに分割し、
	 * 引数の囲い文字を除外した状態でList格納する。
	 * @param  line 一行分のCSVデータ
	 * @param  kakoiMoji 囲み文字
	 * @return ArrayList 項目ごとにCSVデータを格納したList
	 * @throws Exception 例外
	 */
	private ArrayList<String> convEscapeStringToList(String line, char kakoiMoji) throws Exception
	{

		// 戻り値格納用List
		ArrayList<String> resultList = new ArrayList<String>();

		StringTokenizer st = new StringTokenizer(line, ",");
		StringBuffer bf = new StringBuffer();
		int len = 0;

		while (st.hasMoreElements())
		{
			String s = st.nextToken();
			bf = new StringBuffer();
			bf.append(s);
			len = bf.length();

			// 先頭文字が囲み文字の場合除去
			if(bf.charAt(0) == (kakoiMoji))
			{
				bf.delete(0, 1);
				len = len - 1;
			}

			// 終端文字が囲み文字の場合除去
			if(bf.charAt(len - 1) == (kakoiMoji))
			{
				bf.delete(len - 1, len);
			}

			// 戻り値となるリストに1項目分のデータ格納
			resultList.add(bf.toString());
		}
		
		// 1行分のデータを格納したListを返却
		return resultList;
	}
	
	/**
	 * nullの場合空白、null以外の場合そのまま返却します。
	 * @param  data 対象データ
	 * @return nullの場合空白 null以外の場合そのまま返却
	 * @throws Exception 例外
	 */
	private String getNullToBlank(String data) throws Exception
	{

		if(data == null)
		{
			return "";
		}

		return data;
	}
	
	/**
	 * 請求契約テーブルを更新（世代登録）します。
	 * @param  outDbMap DBよりロック検索したデータ
	 * @param  lineData ファイルから読込んだ１行のデータ（0:請求契約番号 1:世代登録年月日時分秒 2:強制窓口フラグ 3:ファイルパス）
	 * @return 登録成功：true　失敗：false
	 * @throws Exception 例外
	 */
	private boolean updateSeikyKei(JBSbatCommonDBInterface outDbMap, ArrayList<String> lineData) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();

		// システム日付を取得
		String sysdate = JCCBatCommon.getSysDateTimeStamp();

		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_NO, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_NO));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.GENE_ADD_DTM, sysdate);
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_STAT, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_STAT));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SYSID, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SYSID));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.MANSION_OWNR_ID, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.MANSION_OWNR_ID));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.MSKM_DTL_NO, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.MSKM_DTL_NO));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_CD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_CD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.NEXT_SEIKY_WAY_DIV, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.NEXT_SEIKY_WAY_DIV));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.KEI_CNC_YMD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.KEI_CNC_YMD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_DSL_YMD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_DSL_YMD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_DLRE_CD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_DLRE_CD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_DLRE_MEMO, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_DLRE_MEMO));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_CYCLE_CD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKY_CYCLE_CD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_CHGE_YMD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_CHGE_YMD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_KANA, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_KANA));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_NO_KOZA, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_NO_KOZA));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_NO_CRECARD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_NO_CRECARD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.INFO_DSP_CD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.INFO_DSP_CD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKYUS_HAKKO_YH, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKYUS_HAKKO_YH));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SKS_SHS_KSH_AD_SAI_FLG, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SKS_SHS_KSH_AD_SAI_FLG));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SKS_SHS_NM_CUST_NM_SAI_FLG, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SKS_SHS_NM_CUST_NM_SAI_FLG));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SHS_HOJIN_SBT_CD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SHS_HOJIN_SBT_CD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SHS_HOJIN_ZENGO_SHITEI_CD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SHS_HOJIN_ZENGO_SHITEI_CD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SHS_KANA, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SHS_KANA));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_NM, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_NM));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_BKM, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_BKM));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_TNTSHA_NM, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_TNTSHA_NM));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_AD_CD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_AD_CD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_PCD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_PCD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_STATE_NM, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_STATE_NM));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_CITY_NM, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_CITY_NM));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_OAZTSU_NM, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_OAZTSU_NM));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_AZCHO_NM, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_AZCHO_NM));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_ADRTTM, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_ADRTTM));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_ADRRM, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_ADRRM));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_BNCHIGO, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_BNCHIGO));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_AD_MAN_INPUT_FLG, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_AD_MAN_INPUT_FLG));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_TELNO, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_TELNO));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_FAX_NO, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_FAX_NO));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SOHUS_MLAD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SOHUS_MLAD));
//		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SKS_SHS_AD_FIX_AF_CHGE_KH, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SKS_SHS_AD_FIX_AF_CHGE_KH));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKYUS_SOHUS_CHGE_YMD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKYUS_SOHUS_CHGE_YMD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_APLY_ADJ_YMD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_APLY_ADJ_YMD));
		// 更新対象（強制窓口フラグ）
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.KYOSEI_MADOGUCHI_FLG, lineData.get(2));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.RSV_TSTA_KIBO_YMD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.RSV_TSTA_KIBO_YMD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.RSV_APLY_YMD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.RSV_APLY_YMD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.RSV_CL_YMD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.RSV_CL_YMD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.RSV_APLY_CD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.RSV_APLY_CD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.IDO_DIV, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.IDO_DIV));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.FIRST_SEIKY_YM, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.FIRST_SEIKY_YM));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.FIRST_PAY_MSKMSHO_SOHU_YH, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.FIRST_PAY_MSKMSHO_SOHU_YH));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.FIRST_PAY_MSKMSHO_SOHU_YMD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.FIRST_PAY_MSKMSHO_SOHU_YMD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.FIRST_PAY_MSKMSHO_RCP_YMD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.FIRST_PAY_MSKMSHO_RCP_YMD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.ADD_DTM, sysdate);
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.ADD_OPEACNT, super.batchUserId);
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.UPD_DTM, sysdate);
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.UPD_OPEACNT, super.batchUserId);
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.DEL_DTM, "");
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.DEL_OPEACNT, "");
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.MK_FLG, "0");
// ANK-2073-00-00 ADD START
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.PAYWAYTCML_CTL_CD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.PAYWAYTCML_CTL_CD));
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.PAYWAYTCML_CTL_CD_CHG_YMD, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.PAYWAYTCML_CTL_CD_CHG_YMD));
// ANK-2073-00-00 ADD END
// ANK-3396-00-00対応 2019/02/04 星野 ADD START
		setMap.setValue(JBSbatKK_T_SEIKY_KEI.KYOSEI_DSL_YKK_CNT, outDbMap.getValue(JBSbatKK_T_SEIKY_KEI.KYOSEI_DSL_YKK_CNT));
// ANK-3396-00-00対応 2019/02/04 星野 ADD END

		// DBアクセスを実行します
		int resultCnt = db_KK_T_SEIKY_KEI.insertByPrimaryKeys(setMap);

		if(resultCnt == 0)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	// ++++++++++++++++++ v15.00.00 追加開始 ++++++++++++++++++
	/**
	 * SQLKEY(KK_SELECT_019)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SEIKY_KEI_NO
	 *		 	RSV_APLY_YMD
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SEIKY_KEI_KK_SELECT_019(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SEIKY_KEI.selectBySqlDefine(paramList, KK_T_SEIKY_KEI_KK_SELECT_019);
	}
	// ++++++++++++++++++ v15.00.00 追加終了 ++++++++++++++++++
}
