/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSBatCHDslAfMvTkskInfIktAdd
*	ソースファイル名	：JBSBatCHDslAfMvTkskInfIktAdd.java
*	作成者				：富士通　
*	作成日				：2020年03月19日
*＜機能概要＞
*　解約後転居先（督促）情報一括登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	49.00.00	2020/03/19   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCCbatShoriIraiUtil;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatCHIFM336;
import eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ;
import eo.business.util.table.JBSbatKK_T_DSL_AF_TNKYS_IF;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.common.constant.JACStrConst;
import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.log.JBSbatLogPrintControl;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatCheckUtil;
import eo.framework.util.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSBatCHDslAfMvTkskInfIktAdd extends JBSbatBusinessService
{

	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(請求契約)*/
	private static final String D_TBL_NAME_KK_T_SEIKY_KEI = "KK_T_SEIKY_KEI";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(解約後転居先情報)*/
	private static final String D_TBL_NAME_KK_T_DSL_AF_TNKYS_IF = "KK_T_DSL_AF_TNKYS_IF";

	/** テーブル(進捗)*/
	private static final String D_TBL_NAME_KK_T_PRG = "KK_T_PRG";

	/** テーブル(異動理由)*/
	private static final String D_TBL_NAME_KK_T_IDO_RSN = "KK_T_IDO_RSN";

	/** テーブル(料金対応記録)*/
	private static final String D_TBL_NAME_CH_T_PRC_TAIOKRK = "CH_T_PRC_TAIOKRK";

	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";

	/** SQL定義キー(CH_SELECT_017)*/
	private static final String KK_T_SEIKY_KEI_CH_SELECT_017 = "CH_SELECT_017";

	/** SQL定義キー(CH_SELECT_001)*/
	private static final String KK_T_DSL_AF_TNKYS_IF_CH_SELECT_001 = "CH_SELECT_001";

	/** SQL定義キー(CH_SELECT_015)*/
	private static final String KK_T_SVC_KEI_CH_SELECT_015 = "CH_SELECT_015";

	/** SQL定義キー(KK_INSERT_002)*/
	private static final String ZM_T_DL_FILE_KANRI_KK_INSERT_002 = "KK_INSERT_002";

	/** テーブルアクセスクラス(請求契約)*/
	private JBSbatSQLAccess db_KK_T_SEIKY_KEI = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(解約後転居先情報)*/
	private JBSbatSQLAccess db_KK_T_DSL_AF_TNKYS_IF = null;

	/** テーブルアクセスクラス(進捗)*/
	private JBSbatSQLAccess db_KK_T_PRG = null;

	/** テーブルアクセスクラス(異動理由)*/
	private JBSbatSQLAccess db_KK_T_IDO_RSN = null;

	/** テーブルアクセスクラス(料金対応記録)*/
	private JBSbatSQLAccess db_CH_T_PRC_TAIOKRK = null;

	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 解約後転居先情報一括登録ファイル定義ファイル名 */
	private static final String CHIFM336_DEF = "CHIFM336.def";

	/** 解約後転居先情報一括登録結果エラーファイル名 */
	private static final String CHIFM337_NAME = "CHIFM337.csv";

	/** 入力ファイル定義 */
	private static final String PARAM_IND = "IND";

	/** ファイルコード */
	private static final String FILE_CD = null;

	/** 処理管理番号 */
	private static final String TRN_KANRI_NO = "000000000223";

	/** ファイル名編集用 */
	private static final String FILE_NM = "解約後転居先情報一括登録結果リスト_yyyyMMddHHmmss.csv";

	/** ファイル名で利用するタイムスタンプのフォーマット */
	private static final String FILE_TIMESTAMP_FORMAT = "yyyyMMddHHmmss";

	/** オペレータカウント：SYSTEM */
	private static final String OPEACNT_SYSTEM = "SYSTEM";

	/** バッチ更新者ＩＤ */
	private static final String BATCH_USER_ID = "BATSQLDEF";

	/** 解約後転居先情報一括登録エラーファイルオブジェクト */
	private JBSbatBusinessFileUtil chifm337FileObj = null;

	/** 解約後転居先情報一括登録エラーファイルレコード件数 */
	private int chifm337RecordCnt = 0;

	/** 進捗特記事項_連結文字 */
	private static final String PRG_STAT_DELIMITA = " ";
	/** 進捗特記事項_変更前 */
	private static final String PRG_STAT_BEFORE = "：(変更前)";
	/** 進捗特記事項_変更後 */
	private static final String PRG_STAT_AFTER = "(変更後)";

	/** KK3231 解約転居先情報の照会登録時の項目和名 */
	private static final String JP_CUST_NM = "氏名";
	private static final String JP_CUST_KANA = "氏名(カナ)";
	private static final String JP_TELNO = "電話番号";
	private static final String JP_TELNO_SBT = "電話番号(種別)";
	private static final String JP_PCD = "郵便番号";
	private static final String JP_AD = "住所";
	private static final String JP_MITCK_FLG = "未着フラグ";
	private static final String JP_YK_KDNSK_NON_FLG = "有効架電先なしフラグ";
	private static final String JP_KIJI = "記事";

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_SEIKY_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIKY_KEI);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_DSL_AF_TNKYS_IF = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_DSL_AF_TNKYS_IF);
		db_KK_T_PRG = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_PRG);
		db_KK_T_IDO_RSN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_IDO_RSN);
		db_CH_T_PRC_TAIOKRK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_PRC_TAIOKRK);
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// ディレイド処理依頼情報リストを取得する
		List<HashMap<String, Object>> shoriIraiList = JCCbatShoriIraiUtil.getShoriIraiInfo(commonItem, this.jobid);

		// ディレイド処理依頼情報リストが取得できない場合、処理を終了する
		if (null == shoriIraiList)
		{
			return null;
		}

		// フリー項目を取得する
		String[] freeItems = freeItem.split(JKKBatConst.S_PARAM_DELIM);

		// 解約後転居先（督促）情報一括登録結果リストファイルパス
		String chifm337FilePath = freeItems[0] + CHIFM337_NAME;

		// 解約後転居先（督促）情報一括登録リスト定義ファイル名を取得する
		String chifm336DefName = JBSbatAplConst.getAplConstValue(PARAM_IND) + CHIFM336_DEF;

		// ディレイド処理依頼情報リストの件数分繰り返す
		for (HashMap<String, Object> shoriIrai : shoriIraiList)
		{
			// チェックエラーフラグ
			boolean checkErrFlg = false;

			// 電子ファイル管理から解約後転居先（督促）情報一括登録リストファイルを取得する
			String chifm336FilePath = JCCBatCommon.searchDenshiFile(commonItem, (String)shoriIrai.get(JBSbatCC_T_DLYD_TRN_REQ.INPUT_EFILE_KANRI_NO));

			// 解約後転居先（督促）情報一括登録リストファイルオブジェクトを生成する
			JBSbatInputFileUtil chifm336FileUtil = new JBSbatInputFileUtil(chifm336FilePath);

			// 解約後転居先（督促）情報一括登録リスト定義ファイルオブジェクトを生成する
			JBSbatDefFileUtil chifm336FileDef = new JBSbatDefFileUtil(chifm336DefName, chifm336FileUtil);

			// 解約後転居先（督促）情報一括登録結果リストファイルオブジェクトを生成する
			chifm337FileObj = JKKBatCommon.createBusinessFileUtil(chifm337FilePath, JKKBatConst.SJIS, JKKStrConst.LINE_SEPARATOR, JKKBatConst.S_SEP_CAM);

			// 解約後転居先（督促）情報一括登録リストファイルレコード件数
			int chifm336RecordCnt = 0;

			// 解約後転居先（督促）情報一括登録結果リストファイルレコード件数
			chifm337RecordCnt = 0;

			// Readerオブジェクトを生成する
			chifm336FileUtil.createReader();

			// 解約後転居先（督促）情報一括登録リストファイルの件数分繰り返す
			while (chifm336FileUtil.ready())
			{

				// ファイルから１レコードを取得する
				String line = chifm336FileUtil.readLine();
				
				// 解約後転居先（督促）情報一括登録リストファイルレコード件数カウント
				chifm336RecordCnt++;

				// ヘッダ行は読み飛ばす
				if (chifm336RecordCnt == 1)
				{
					continue;
				}

				// 空行の場合
				if (!JKKBatCommon.isNotNull(line))
				{
					createChifm337(new HashMap(), "H001", "ECHB1750TW", new String[] {});
					checkErrFlg = true;
					continue;
				}

				// １レコードの情報をマップに格納する
				JBSbatServiceInterfaceMap recordMap = chifm336FileDef.lineToObject(line, chifm336FileUtil, chifm336RecordCnt);

				// フォーマットチェックを行う
				if (recordMap.isInputErrorFlg())
				{
					createChifm337(recordMap.getMap(), "H001", "ECHB1750TW", new String[] {});
					checkErrFlg = true;
					continue;
				}

				// 単項目チェックを行う
				if (!isSingleCheckCHIFM336(recordMap.getMap(), null))
				{
					checkErrFlg = true;
					continue;
				}

				// 請求契約番号
				String seikyKeiNo = (String)recordMap.getMap().get(JBSbatCHIFM336.SEIKY_KEI_NO);

				// 請求契約スキーマの検索を行う
				String[] selectWhereParam = new String[2];
				selectWhereParam[0] = seikyKeiNo;		// 請求契約番号
				selectWhereParam[1] = super.opeDate;	// 予約適用年月日
				executeKK_T_SEIKY_KEI_CH_SELECT_017(selectWhereParam);

				JBSbatCommonDBInterface dbMap = db_KK_T_SEIKY_KEI.selectNext();

				// 検索結果なし
				if (null == dbMap)
				{
					// 解約後転居先（督促）情報一括登録結果リストを出力する
					createChifm337(recordMap.getMap(), "E003", "ECHB1730TW", new String[] { "請求契約番号" });
					checkErrFlg = true;
					continue;
				}

				// 解約後転居先情報の検索を行う
				selectWhereParam = new String[2];
				selectWhereParam[0] = seikyKeiNo;		// 請求契約番号
				executeKK_T_DSL_AF_TNKYS_IF_CH_SELECT_001(selectWhereParam);

				dbMap = db_KK_T_DSL_AF_TNKYS_IF.selectNext();

				// 検索結果あり
				String prgTkjk = "";
				HashMap<String, Object> mapCHIFM336 = recordMap.getMap();
				if (null != dbMap)
				{
					prgTkjk = getPrgTkjk(recordMap.getMap(), dbMap.getMap());
				}

				// 契約スキーマの検索を行う
				selectWhereParam = new String[3];
				selectWhereParam[0] = seikyKeiNo;		// 請求契約番号
				selectWhereParam[1] = super.opeDate;	// 予約適用年月日
				selectWhereParam[2] = super.opeDate;	// 予約適用年月日
				executeKK_T_SVC_KEI_CH_SELECT_015(selectWhereParam);

				dbMap = db_KK_T_SVC_KEI.selectNext();

				// 解約後転居先情報の登録
				insertKK_T_DSL_AF_TNKYS_IF(mapCHIFM336);

				while (null != dbMap)
				{
					String idoDtm = JBSbatDateUtil.getSystemDateTimeStamp();

					// 進捗の登録
					insertKK_T_PRG(dbMap.getMap(), idoDtm, prgTkjk);
					// 異動理由の登録
					insertKK_T_IDO_RSN(dbMap.getMap(), idoDtm);

					dbMap = db_KK_T_SVC_KEI.selectNext();
				}
				// 料金対応記録の登録
				insertCH_T_PRC_TAIOKRK(recordMap.getMap());

				// データ1件を処理する毎にコミット
				commit();
			}

			// 解約後転居先情報一括登録エラーファイルを閉じる
			JKKBatCommon.closeBusinessFileUtil(chifm337FileObj);

			// ディレイド処理依頼番号
			String shoriIraiNo = (String)shoriIrai.get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO);

			// ディレイド処理依頼結果更新
			// チェックエラーフラグがtrueの場合
			if (checkErrFlg)
			{
				JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, JKKStrConst.DLYD_TRN_RSLT_CD_APP_ERR, null);

				// 電子ファイル管理登録処理
				JBSbatCommonItem arg0 = commonItem;								// 業務共通電文
				String arg1 = FILE_CD;											// ファイルコード
				String arg2 = chifm337FilePath;									// ファイルパス
				String arg3 = JBSbatDateUtil.adjustMonth(super.opeDate, 1);		// ファイル削除年月日（運用日付 + 1ヶ月）
				String[] rc = JCCBatCommon.createDenshiFile(arg0, arg1, arg2, arg3);

				// ログ出力
				super.logPrint.printDebugLog("電子ファイル管理番号(" + rc[0] + ")、世代登録年月日時分秒(" + rc[1] + ")");

				// システム日時を取得する
				String sysDateTime = JCCBatCommon.getSysDateTime();
				// ファイル名
				String fileName = FILE_NM.replaceAll(FILE_TIMESTAMP_FORMAT, sysDateTime);

				// ダウンロードファイル管理登録処理
				insertZM_T_DL_FILE_KANRI(fileName, rc[0], rc[1]);

			}
			// チェックエラーフラグがfalseの場合
			else
			{
				JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, JKKStrConst.DLYD_TRN_RSLT_CD_COMPLETE, null);
			}

			// 一時ファイルを削除する
			File chifm337File = new File(chifm337FilePath);
			if (chifm337File.exists())
			{
				chifm337File.delete();
			}

			// 処理依頼1件を処理する毎にコミット
			commit();
		}

		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_SEIKY_KEI.close();
		db_KK_T_SVC_KEI.close();
		db_KK_T_DSL_AF_TNKYS_IF.close();
		db_KK_T_PRG.close();
		db_KK_T_IDO_RSN.close();
		db_CH_T_PRC_TAIOKRK.close();
		db_ZM_T_DL_FILE_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 *入力情報（解約後転居先情報一括登録ファイル）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	@SuppressWarnings("unchecked")
	private boolean isSingleCheckCHIFM336(HashMap rsMap, HashMap itemvalueMap) throws Exception
	{
		// 単項目チェックを行います
		String strValue = null;

		// 請求契約番号項目チェック
		strValue = (String)rsMap.get("SEIKY_KEI_NO");
		// 必須チェック
		if (strValue == null || "".equals(strValue))
		{
			createChifm337(rsMap, "E001", "ECHB1690TW", new String[] { "請求契約番号" });
			return false;
		}
		// 桁数チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "ketasuu2", "10", "10" }))
		{
			createChifm337(rsMap, "E002", "ECHB1720TW", new String[] { "請求契約番号" });
			return false;
		}
		// 属性チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "hannkakuesuuji1" }))
		{
			createChifm337(rsMap, "E023", "ECHB1740TW", new String[] { "請求契約番号" });
			return false;
		}

		// 氏名項目チェック
		strValue = (String)rsMap.get("CUST_NM");
		// 桁数チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "ketasuu2", "0", "121" }))
		{
			createChifm337(rsMap, "E004", "ECHB1700TW", new String[] { "氏名" });
			return false;
		}
		// 属性チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "name_address" }))
		{
			createChifm337(rsMap, "E005", "ECHB1710TW", new String[] { "氏名" });
			return false;
		}

		// 氏名（カナ）項目チェック
		strValue = (String)rsMap.get("CUST_KANA");
		// 桁数チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "ketasuu2", "0", "121" }))
		{
			createChifm337(rsMap, "E006", "ECHB1700TW", new String[] { "氏名(カナ)" });
			return false;
		}
		// 属性チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "zenkakukana" }))
		{
			createChifm337(rsMap, "E007", "ECHB1710TW", new String[] { "氏名(カナ)" });
			return false;
		}

		// 電話番号項目チェック
		strValue = (String)rsMap.get("TELNO");
		// 桁数チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "ketasuu2", "0", "11" }))
		{
			createChifm337(rsMap, "E008", "ECHB1700TW", new String[] { "電話番号" });
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"tel2"}))
		{
			createChifm337(rsMap, "E024", "ECHB1740TW", new String[] { "電話番号" });
			return false;
		}

		// 電話番号（種別）項目チェック
		strValue = (String)rsMap.get("TELNO_SBT");
		// 桁数チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "ketasuu2", "0", "30" }))
		{
			createChifm337(rsMap, "E009", "ECHB1700TW", new String[] { "電話番号(種別)" });
			return false;
		}
		// 属性チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "mix" }))
		{
			createChifm337(rsMap, "E010", "ECHB1710TW", new String[] { "電話番号(種別)" });
			return false;
		}

		// 郵便番号項目チェック
		strValue = (String)rsMap.get("PCD");
		// 桁数チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "ketasuu2", "0", "7" }))
		{
			createChifm337(rsMap, "E011", "ECHB1700TW", new String[] { "郵便番号" });
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			createChifm337(rsMap, "E025", "ECHB1740TW", new String[] { "郵便番号" });
			return false;
		}

		// 住所項目チェック
		strValue = (String)rsMap.get("AD");
		// 桁数チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "ketasuu2", "0", "167" }))
		{
			createChifm337(rsMap, "E012", "ECHB1700TW", new String[] { "住所" });
			return false;
		}
		// 属性チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "name_address" }))
		{
			createChifm337(rsMap, "E013", "ECHB1710TW", new String[] { "住所" });
			return false;
		}

		// 未着フラグ項目チェック
		strValue = (String)rsMap.get("MITCK_FLG");
		// 必須チェック
		if (strValue == null || "".equals(strValue))
		{
			createChifm337(rsMap, "E014", "ECHB1690TW", new String[] { "未着フラグ" });
			return false;
		}
		// 桁数チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "ketasuu2", "0", "1" }))
		{
			createChifm337(rsMap, "E015", "ECHB1700TW", new String[] { "未着フラグ" });
			return false;
		}
		// 属性チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "hannkakuesuuji1" }))
		{
			createChifm337(rsMap, "E016", "ECHB1720TW", new String[] { "未着フラグ" });
			return false;
		}
		// 範囲外チェック
		if (!"0".equals(strValue) && !"1".equals(strValue))
		{
			createChifm337(rsMap, "E016", "ECHB1720TW", new String[] { "未着フラグ" });
			return false;
		}

		// 有効架電先なしフラグ項目チェック
		strValue = (String)rsMap.get("YK_KDNSK_NON_FLG");
		// 必須チェック
		if (strValue == null || "".equals(strValue))
		{
			createChifm337(rsMap, "E017", "ECHB1690TW", new String[] { "有効架電先なしフラグ" });
			return false;
		}
		// 桁数チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "ketasuu2", "0", "1" }))
		{
			createChifm337(rsMap, "E018", "ECHB1700TW", new String[] { "有効架電先なしフラグ" });
			return false;
		}
		// 属性チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "hannkakuesuuji1" }))
		{
			createChifm337(rsMap, "E019", "ECHB1720TW", new String[] { "有効架電先なしフラグ" });
			return false;
		}
		// 範囲外チェック
		if (!"0".equals(strValue) && !"1".equals(strValue))
		{
			createChifm337(rsMap, "E019", "ECHB1720TW", new String[] { "有効架電先なしフラグ" });
			return false;
		}

		// 記事項目チェック
		strValue = (String)rsMap.get("KIJI");
		// 必須チェック
		if (strValue == null || "".equals(strValue))
		{
			createChifm337(rsMap, "E020", "ECHB1690TW", new String[] { "記事" });
			return false;
		}
		// 桁数チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "ketasuu2", "0", "100" }))
		{
			createChifm337(rsMap, "E021", "ECHB1700TW", new String[] { "記事" });
			return false;
		}
		// 属性チェック
		if (!JBSbatCheckUtil.invoke(strValue, new String[] { "mix" }))
		{
			createChifm337(rsMap, "E022", "ECHB1710TW", new String[] { "記事" });
			return false;
		}

		return true;
	}

	/**
	 * SQLKEY(CH_SELECT_017)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求契約番号
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SEIKY_KEI_CH_SELECT_017(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_CH_SELECT_017);
	}

	/**
	 * SQLKEY(CH_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_DSL_AF_TNKYS_IF_CH_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_DSL_AF_TNKYS_IF.selectBySqlDefine(paramList, KK_T_DSL_AF_TNKYS_IF_CH_SELECT_001);
	}

	/**
	 * SQLKEY(CH_SELECT_015)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求契約
	 *		 	運用日
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_CH_SELECT_015(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_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_CH_SELECT_015);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	請求契約番号				SEIKY_KEI_NO
	 *		 	世代登録年月日時分秒				GENE_ADD_DTM
	 *		 	お客様名				CUST_NM
	 *		 	お客様カナ名				CUST_KANA
	 *		 	電話番号				TELNO
	 *		 	電話番号（種別）				TELNO_SBT
	 *		 	郵便番号				PCD
	 *		 	住所				AD
	 *		 	未着フラグ				MITCK_FLG
	 *		 	有効架電先無しフラグ				YK_KDNSK_NON_FLG
	 *		 	記事				KIJI
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_DSL_AF_TNKYS_IF_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("SEIKY_KEI_NO", setParam[0]);
		setMap.setValue("GENE_ADD_DTM", setParam[1]);
		setMap.setValue("CUST_NM", setParam[2]);
		setMap.setValue("CUST_KANA", setParam[3]);
		setMap.setValue("TELNO", setParam[4]);
		setMap.setValue("TELNO_SBT", setParam[5]);
		setMap.setValue("PCD", setParam[6]);
		setMap.setValue("AD", setParam[7]);
		setMap.setValue("MITCK_FLG", setParam[8]);
		setMap.setValue("YK_KDNSK_NON_FLG", setParam[9]);
		setMap.setValue("KIJI", setParam[10]);
		setMap.setValue("ADD_DTM", setParam[11]);
		setMap.setValue("ADD_OPEACNT", setParam[12]);
		setMap.setValue("UPD_DTM", setParam[13]);
		setMap.setValue("UPD_OPEACNT", setParam[14]);
		setMap.setValue("DEL_DTM", setParam[15]);
		setMap.setValue("DEL_OPEACNT", setParam[16]);
	
		// DBアクセスを実行します
		db_KK_T_DSL_AF_TNKYS_IF.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	進捗番号				PRG_NO
	 *		 	申込明細番号				MSKM_DTL_NO
	 *		 	請求契約番号				SEIKY_KEI_NO
	 *		 	請求方法番号（口座）				SEIKY_WAY_NO_KOZA
	 *		 	請求方法番号（クレジットカード）				SEIKY_WAY_NO_CRECARD
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	サービス契約内訳番号				SVC_KEI_UCWK_NO
	 *		 	サービス契約回線内訳番号				SVC_KEI_KAISEN_UCWK_NO
	 *		 	機器提供サービス契約番号				KKTK_SVC_KEI_NO
	 *		 	オプションサービス契約番号				OP_SVC_KEI_NO
	 *		 	請求オプションサービス契約番号				SEIOPSVC_KEI_NO
	 *		 	サブオプションサービス契約番号				SBOP_SVC_KEI_NO
	 *		 	割引サービス契約番号				WRIB_SVC_KEI_NO
	 *		 	異動区分				IDO_DIV
	 *		 	異動年月日時分秒				IDO_DTM
	 *		 	進捗ステータス				PRG_STAT
	 *		 	進捗年月日時分秒				PRG_DTM
	 *		 	進捗メモ				PRG_MEMO
	 *		 	進捗特記事項１				PRG_TKJK_1
	 *		 	進捗特記事項２				PRG_TKJK_2
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_PRG_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("PRG_NO", setParam[0]);
		setMap.setValue("MSKM_DTL_NO", setParam[1]);
		setMap.setValue("SEIKY_KEI_NO", setParam[2]);
		setMap.setValue("SEIKY_WAY_NO_KOZA", setParam[3]);
		setMap.setValue("SEIKY_WAY_NO_CRECARD", setParam[4]);
		setMap.setValue("SVC_KEI_NO", setParam[5]);
		setMap.setValue("SVC_KEI_UCWK_NO", setParam[6]);
		setMap.setValue("SVC_KEI_KAISEN_UCWK_NO", setParam[7]);
		setMap.setValue("KKTK_SVC_KEI_NO", setParam[8]);
		setMap.setValue("OP_SVC_KEI_NO", setParam[9]);
		setMap.setValue("SEIOPSVC_KEI_NO", setParam[10]);
		setMap.setValue("SBOP_SVC_KEI_NO", setParam[11]);
		setMap.setValue("WRIB_SVC_KEI_NO", setParam[12]);
		setMap.setValue("IDO_DIV", setParam[13]);
		setMap.setValue("IDO_DTM", setParam[14]);
		setMap.setValue("PRG_STAT", setParam[15]);
		setMap.setValue("PRG_DTM", setParam[16]);
		setMap.setValue("PRG_MEMO", setParam[17]);
		setMap.setValue("PRG_TKJK_1", setParam[18]);
		setMap.setValue("PRG_TKJK_2", setParam[19]);
		setMap.setValue("ADD_DTM", setParam[20]);
		setMap.setValue("ADD_OPEACNT", setParam[21]);
		setMap.setValue("UPD_DTM", setParam[22]);
		setMap.setValue("UPD_OPEACNT", setParam[23]);
		setMap.setValue("DEL_DTM", setParam[24]);
		setMap.setValue("DEL_OPEACNT", setParam[25]);
	
		// DBアクセスを実行します
		db_KK_T_PRG.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	異動区分				IDO_DIV
	 *		 	異動年月日時分秒				IDO_DTM
	 *		 	異動理由コード				IDO_RSN_CD
	 *		 	異動理由番号				IDO_RSN_NO
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	異動理由メモ				IDO_RSN_MEMO
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_IDO_RSN_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("IDO_DIV", setParam[0]);
		setMap.setValue("IDO_DTM", setParam[1]);
		setMap.setValue("IDO_RSN_CD", setParam[2]);
		setMap.setValue("IDO_RSN_NO", setParam[3]);
		setMap.setValue("SVC_KEI_NO", setParam[4]);
		setMap.setValue("IDO_RSN_MEMO", setParam[5]);
		setMap.setValue("ADD_DTM", setParam[6]);
		setMap.setValue("ADD_OPEACNT", setParam[7]);
		setMap.setValue("UPD_DTM", setParam[8]);
		setMap.setValue("UPD_OPEACNT", setParam[9]);
		setMap.setValue("DEL_DTM", setParam[10]);
		setMap.setValue("DEL_OPEACNT", setParam[11]);
	
		// DBアクセスを実行します
		db_KK_T_IDO_RSN.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	料金対応記録番号				PRC_TAIO_KIROK_NO
	 *		 	料金対応ユーザＩＤ				PRC_TAIO_USER_ID
	 *		 	請求契約番号				SEIKY_KEI_NO
	 *		 	対応年月日時分秒				TAIO_DTM
	 *		 	料金対応記録種別コード				PRC_TAIO_KIROK_SBT_CD
	 *		 	料金対応記録種別詳細コード				PRC_TAIO_KIROK_SBT_DTL_CD
	 *		 	タイトル				TITLE
	 *		 	記事				KIJI
	 *		 	変更前コード種別コード				CHG_BF_CD_SBT_CD
	 *		 	変更前コード区分				CHG_BF_CD_DIV
	 *		 	変更後コード種別コード				CHG_AF_CD_SBT_CD
	 *		 	変更後コード区分				CHG_AF_CD_DIV
	 *		 	変更前料金グループコード				CHG_BF_PRC_GRP_CD
	 *		 	変更前料金コースコード				CHG_BF_PCRS_CD
	 *		 	変更前料金サービスコード				CHG_BF_PRC_SVC_CD
	 *		 	変更前料金項目コード				CHG_BF_PRC_KMK_CD
	 *		 	変更後料金グループコード				CHG_AF_PRC_GRP_CD
	 *		 	変更後料金コースコード				CHG_AF_PCRS_CD
	 *		 	変更後料金サービスコード				CHG_AF_PRC_SVC_CD
	 *		 	変更後料金項目コード				CHG_AF_PRC_KMK_CD
	 *		 	変更前年月日				CHG_BF_YMD
	 *		 	変更後年月日				CHG_AF_YMD
	 *		 	変更前金額				CHG_BF_AMNT
	 *		 	変更後金額				CHG_AF_AMNT
	 *		 	記録対象年月				KIROK_TG_YM
	 *		 	対応履歴連動対象フラグ				TAIORRKI_RENDO_TG_FLG
	 *		 	対応記録番号				TAIO_KIROK_NO
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	督促番号				TOKUSOKU_NO
	 *		 	督促異動番号				TOKUSOKU_IDO_NO
	 *		 	請求番号				SEIKY_NO
	 *		 	金庫番号				KNK_NO
	 *		 	債権番号				SAIKEN_NO
	 *		 	入金番号				NYUKIN_NO
	 *		 	電子ファイル管理番号				EFILE_KANRI_NO
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_PRC_TAIOKRK_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("PRC_TAIO_KIROK_NO", setParam[0]);
		setMap.setValue("PRC_TAIO_USER_ID", setParam[1]);
		setMap.setValue("SEIKY_KEI_NO", setParam[2]);
		setMap.setValue("TAIO_DTM", setParam[3]);
		setMap.setValue("PRC_TAIO_KIROK_SBT_CD", setParam[4]);
		setMap.setValue("PRC_TAIO_KIROK_SBT_DTL_CD", setParam[5]);
		setMap.setValue("TITLE", setParam[6]);
		setMap.setValue("KIJI", setParam[7]);
		setMap.setValue("CHG_BF_CD_SBT_CD", setParam[8]);
		setMap.setValue("CHG_BF_CD_DIV", setParam[9]);
		setMap.setValue("CHG_AF_CD_SBT_CD", setParam[10]);
		setMap.setValue("CHG_AF_CD_DIV", setParam[11]);
		setMap.setValue("CHG_BF_PRC_GRP_CD", setParam[12]);
		setMap.setValue("CHG_BF_PCRS_CD", setParam[13]);
		setMap.setValue("CHG_BF_PRC_SVC_CD", setParam[14]);
		setMap.setValue("CHG_BF_PRC_KMK_CD", setParam[15]);
		setMap.setValue("CHG_AF_PRC_GRP_CD", setParam[16]);
		setMap.setValue("CHG_AF_PCRS_CD", setParam[17]);
		setMap.setValue("CHG_AF_PRC_SVC_CD", setParam[18]);
		setMap.setValue("CHG_AF_PRC_KMK_CD", setParam[19]);
		setMap.setValue("CHG_BF_YMD", setParam[20]);
		setMap.setValue("CHG_AF_YMD", setParam[21]);
		setMap.setValue("CHG_BF_AMNT", setParam[22]);
		setMap.setValue("CHG_AF_AMNT", setParam[23]);
		setMap.setValue("KIROK_TG_YM", setParam[24]);
		setMap.setValue("TAIORRKI_RENDO_TG_FLG", setParam[25]);
		setMap.setValue("TAIO_KIROK_NO", setParam[26]);
		setMap.setValue("SVC_KEI_NO", setParam[27]);
		setMap.setValue("TOKUSOKU_NO", setParam[28]);
		setMap.setValue("TOKUSOKU_IDO_NO", setParam[29]);
		setMap.setValue("SEIKY_NO", setParam[30]);
		setMap.setValue("KNK_NO", setParam[31]);
		setMap.setValue("SAIKEN_NO", setParam[32]);
		setMap.setValue("NYUKIN_NO", setParam[33]);
		setMap.setValue("EFILE_KANRI_NO", setParam[34]);
		setMap.setValue("ADD_DTM", setParam[35]);
		setMap.setValue("ADD_OPEACNT", setParam[36]);
		setMap.setValue("UPD_DTM", setParam[37]);
		setMap.setValue("UPD_OPEACNT", setParam[38]);
		setMap.setValue("DEL_DTM", setParam[39]);
		setMap.setValue("DEL_OPEACNT", setParam[40]);
	
		// DBアクセスを実行します
		db_CH_T_PRC_TAIOKRK.insertByPrimaryKeys(setMap);
	}

	/**
	 * SQLKEY(KK_INSERT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	処理管理番号
	 *		 	ファイル名
	 *		 	データ件数
	 *		 	電子ファイル管理番号
	 *		 	世代登録年月日時分秒
	 * </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);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 解約後転居先情報一括登録エラーファイルを出力する。<br>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param errCd エラーコード
	 * @param msgid メッセージＩＤ
	 * @param repChar 置換文字列（配列で複数指定可能）
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	@SuppressWarnings("unchecked")
	private void createChifm337(HashMap rsMap, String errCd, String msgId, String[] repChar) throws Exception
	{
		ArrayList<String> outputInfo = new ArrayList<String>();

		if (chifm337RecordCnt == 0)
		{
			// ヘッダ行出力
			outputInfo.add("一括登録エラーコード");
			outputInfo.add("エラー内容");
			outputInfo.add("請求契約番号");
			outputInfo.add("氏名");
			outputInfo.add("氏名(カナ)");
			outputInfo.add("電話番号");
			outputInfo.add("電話番号(種別)");
			outputInfo.add("郵便番号");
			outputInfo.add("住所");
			outputInfo.add("未着フラグ");
			outputInfo.add("有効架電先なしフラグ");
			outputInfo.add("記事");

			JKKBatCommon.printDoubleQuoteBusinessFileUtil(chifm337FileObj, outputInfo);

			chifm337RecordCnt++;

			outputInfo = new ArrayList<String>();
		}

		outputInfo.add(errCd);
		outputInfo.add(JBSbatLogPrintControl.getMessage(msgId, repChar));
		outputInfo.add((String)rsMap.get(JBSbatCHIFM336.SEIKY_KEI_NO));
		outputInfo.add((String)rsMap.get(JBSbatCHIFM336.CUST_NM));
		outputInfo.add((String)rsMap.get(JBSbatCHIFM336.CUST_KANA));
		outputInfo.add((String)rsMap.get(JBSbatCHIFM336.TELNO));
		outputInfo.add((String)rsMap.get(JBSbatCHIFM336.TELNO_SBT));
		outputInfo.add((String)rsMap.get(JBSbatCHIFM336.PCD));
		outputInfo.add((String)rsMap.get(JBSbatCHIFM336.AD));
		outputInfo.add((String)rsMap.get(JBSbatCHIFM336.MITCK_FLG));
		outputInfo.add((String)rsMap.get(JBSbatCHIFM336.YK_KDNSK_NON_FLG));
		outputInfo.add((String)rsMap.get(JBSbatCHIFM336.KIJI));

		JKKBatCommon.printDoubleQuoteBusinessFileUtil(chifm337FileObj, outputInfo);

		chifm337RecordCnt++;
	}

	/**
	 * 解約後転居先情報の登録を行います。
	 * <br>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void insertKK_T_DSL_AF_TNKYS_IF(HashMap rsMap) throws Exception
	{
		// パラメータ設定
		Object[] param = new Object[17];
		param[0] = rsMap.get(JBSbatCHIFM336.SEIKY_KEI_NO);
		param[1] = JBSbatDateUtil.getSystemDateTimeStamp();
		param[2] = rsMap.get(JBSbatCHIFM336.CUST_NM);
		param[3] = rsMap.get(JBSbatCHIFM336.CUST_KANA);
		param[4] = rsMap.get(JBSbatCHIFM336.TELNO);
		param[5] = rsMap.get(JBSbatCHIFM336.TELNO_SBT);
		param[6] = rsMap.get(JBSbatCHIFM336.PCD);
		param[7] = rsMap.get(JBSbatCHIFM336.AD);
		param[8] = rsMap.get(JBSbatCHIFM336.MITCK_FLG);
		param[9] = rsMap.get(JBSbatCHIFM336.YK_KDNSK_NON_FLG);
		param[10] = rsMap.get(JBSbatCHIFM336.KIJI);
		param[11] = JBSbatDateUtil.getSystemDateTimeStamp();
		param[12] = OPEACNT_SYSTEM;
		param[13] = JBSbatDateUtil.getSystemDateTimeStamp();
		param[14] = OPEACNT_SYSTEM;
		param[15] = null;
		param[16] = null;

		executeKK_T_DSL_AF_TNKYS_IF_PKINSERT(param);
	}

	/**
	 * 進捗の登録を行います。
	 * <br>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param idoDtm 異動年月日時分秒。
	 * @param prgTkjk 特記事項。
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void insertKK_T_PRG(HashMap rsMap, String idoDtm, String prgTkjk) throws Exception
	{

		String prgTkjk2 = null;
		if (prgTkjk.length() > 128)
		{
			prgTkjk2 = prgTkjk.substring(128);
			prgTkjk = prgTkjk.substring(0, 128);
		}

		// パラメータ設定
		Object[] param = new Object[26];
		param[0] = JCCBatCommon.getFormatedNextSeq(super.commonItem, JKKBatConst.SEQ_PRG_NO, "", 12);
		param[1] = null;
		param[2] = null;
		param[3] = null;
		param[4] = null;
		param[5] = rsMap.get(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);
		param[6] = null;
		param[7] = null;
		param[8] = null;
		param[9] = null;
		param[10] = null;
		param[11] = null;
		param[12] = null;
		param[13] = JKKStrConst.CD00576_CUST_INFO_CHG;
		param[14] = idoDtm;
		param[15] = JKKBatConst.PRG_STAT_NAIYO_CHG_FIN;
		param[16] = JKKBatCommon.getOpeDateTimeStamp(commonItem);
		param[17] = null;
		param[18] = prgTkjk;
		param[19] = prgTkjk2;

		param[20] = JBSbatDateUtil.getSystemDateTimeStamp();
		param[21] = OPEACNT_SYSTEM;
		param[22] = JBSbatDateUtil.getSystemDateTimeStamp();
		param[23] = OPEACNT_SYSTEM;
		param[24] = null;
		param[25] = null;

		executeKK_T_PRG_PKINSERT(param);
	}

	/**
	 * 異動理由の登録を行います。
	 * <br>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param idoDtm 異動年月日時分秒。
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void insertKK_T_IDO_RSN(HashMap rsMap, String idoDtm) throws Exception
	{
		// パラメータ設定
		Object[] param = new Object[12];
		param[0] = JKKStrConst.CD00576_CUST_INFO_CHG;
		param[1] = idoDtm;
		param[2] = JKKStrConst.CD00846_DSL_AF_MV_TKSK;
		param[3] = JCCBatCommon.getFormatedNextSeq(commonItem, JKKBatConst.SEQ_IDO_RSN_NO, "", 12);
		param[4] = rsMap.get(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);
		param[5] = null;
		param[6] = JBSbatDateUtil.getSystemDateTimeStamp();
		param[7] = OPEACNT_SYSTEM;
		param[8] = JBSbatDateUtil.getSystemDateTimeStamp();
		param[9] = OPEACNT_SYSTEM;
		param[10] = null;
		param[11] = null;

		executeKK_T_IDO_RSN_PKINSERT(param);
	}

	/**
	 * 料金対応記録の登録を行います。
	 * <br>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void insertCH_T_PRC_TAIOKRK(HashMap rsMap) throws Exception
	{
		// パラメータ設定
		Object[] param = new Object[41];
		param[0] = JKKBatCommon.getFormatedNextSeq(commonItem, JACStrConst.SEQ_PRC_TAIO_KIROK, "", 12);
		param[1] = BATCH_USER_ID;
		param[2] = rsMap.get(JBSbatCHIFM336.SEIKY_KEI_NO);
		param[3] = JKKBatCommon.getOpeDateTimeStamp(commonItem);
		param[4] = JACStrConst.TKRK_SBT_CUST_CHG;
		param[5] = JACStrConst.TKRK_SBTD_DSL_AF_MV_TKSK;
		param[6] = JACStrConst.TKRK_TITLE_DSL_AF_MV_TKSK;
		param[7] = rsMap.get(JBSbatCHIFM336.KIJI);
		param[8] = null;
		param[9] = null;
		param[10] = null;
		param[11] = null;
		param[12] = null;
		param[13] = null;
		param[14] = null;
		param[15] = null;
		param[16] = null;
		param[17] = null;
		param[18] = null;
		param[19] = null;
		param[20] = null;
		param[21] = null;
		param[22] = null;
		param[23] = null;
		param[24] = null;
		param[25] = "0";
		param[26] = null;
		param[27] = null;
		param[28] = null;
		param[29] = null;
		param[30] = null;
		param[31] = null;
		param[32] = null;
		param[33] = null;
		param[34] = null;
		param[35] = JBSbatDateUtil.getSystemDateTimeStamp();
		param[36] = OPEACNT_SYSTEM;
		param[37] = JBSbatDateUtil.getSystemDateTimeStamp();
		param[38] = OPEACNT_SYSTEM;
		param[39] = null;
		param[40] = null;

		executeCH_T_PRC_TAIOKRK_PKINSERT(param);
	}

	/**
	 * ダウンロードファイル管理の登録を行います。
	 * <br>
	 * @param fileName ファイル名
	 * @param fileKanriNo 電子ファイル管理番号
	 * @param geneAddDtm 世代登録年月日時分秒
	 * @throws Exception 
	 */
	private void insertZM_T_DL_FILE_KANRI(String fileName, String fileKanriNo, String geneAddDtm) throws Exception
	{

		String[] insertSetParam = new String[5];
		insertSetParam[0] = TRN_KANRI_NO;								// 処理管理番号
		insertSetParam[1] = fileName;									// ファイル名
		insertSetParam[2] = String.valueOf(chifm337RecordCnt);			// データ件数
		insertSetParam[3] = fileKanriNo;								// 電子ファイル管理番号
		insertSetParam[4] = geneAddDtm;									// 世代登録年月日時分秒

		executeZM_T_DL_FILE_KANRI_KK_INSERT_002(insertSetParam);
	}

	/**
	 * 特記事項の取得を行います。
	 * （新規登録の場合、未設定。既に登録がある場合、変更前・変更後を登録する。）
	 * <br>
	 * @param rsMap 入力データ（TXT）を格納されたHashMap。
	 * @param dbMap 入力データ（DB）を格納されたHashMap。
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private String getPrgTkjk(HashMap rsMap, HashMap dbMap) throws Exception
	{

		String[][] keyAndNmArray = {
				{ JBSbatKK_T_DSL_AF_TNKYS_IF.CUST_NM, JP_CUST_NM },
				{ JBSbatKK_T_DSL_AF_TNKYS_IF.CUST_KANA, JP_CUST_KANA },
				{ JBSbatKK_T_DSL_AF_TNKYS_IF.TELNO, JP_TELNO },
				{ JBSbatKK_T_DSL_AF_TNKYS_IF.TELNO_SBT, JP_TELNO_SBT },
				{ JBSbatKK_T_DSL_AF_TNKYS_IF.PCD, JP_PCD },
				{ JBSbatKK_T_DSL_AF_TNKYS_IF.AD, JP_AD },
				{ JBSbatKK_T_DSL_AF_TNKYS_IF.MITCK_FLG, JP_MITCK_FLG },
				{ JBSbatKK_T_DSL_AF_TNKYS_IF.YK_KDNSK_NON_FLG, JP_YK_KDNSK_NON_FLG },
				{ JBSbatKK_T_DSL_AF_TNKYS_IF.KIJI, JP_KIJI } };

		// 文字を連結
		StringBuilder prgTkjk = new  StringBuilder();

		for (int i = 0; i < keyAndNmArray.length; i++) {
			if (!JKKStringUtil.nullToBlank((String)dbMap.get(keyAndNmArray[i][0]))
					.equals(JKKStringUtil.nullToBlank((String)rsMap.get(keyAndNmArray[i][0])))) {
				prgTkjk.append(keyAndNmArray[i][1] + PRG_STAT_BEFORE)
						.append(JKKStringUtil.nullToBlank((String)dbMap.get(keyAndNmArray[i][0])))
						.append(PRG_STAT_DELIMITA)
						.append(PRG_STAT_AFTER)
						.append(JKKStringUtil.nullToBlank((String)rsMap.get(keyAndNmArray[i][0])))
						.append(PRG_STAT_DELIMITA);
			}
		}

		return prgTkjk.toString();
	}
}
