/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCRMiKanyuTawsDel
*	ソースファイル名	：JBSbatCRMiKanyuTawsDel.java
*	作成者				：富士通　
*	作成日				：2011年07月12日
*＜機能概要＞
*　未加入問合せ情報削除処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/12   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCRBatCommon;
import eo.business.util.table.JBSbatCK_T_PROSCST;
import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCRUtilCommon;
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.util.JBSbatBusinessFileUtil;

/**
* 未加入問合せ情報削除処理 <p>
*<BR>
* @author 富士通
*/
public class JBSbatCRMiKanyuTawsDel extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(問合せ客)*/
	private static final String D_TBL_NAME_CK_T_PROSCST = "CK_T_PROSCST";

	/** テーブル(電子ファイル管理)*/
	private static final String D_TBL_NAME_CC_T_EFILE_KANRI = "CC_T_EFILE_KANRI";

	/** テーブル(添付ファイル)*/
	private static final String D_TBL_NAME_CC_T_TEMP_FILE = "CC_T_TEMP_FILE";

	/** テーブル(対応記録明細)*/
	private static final String D_TBL_NAME_CR_T_TAIOKRK_DTL = "CR_T_TAIOKRK_DTL";

	/** テーブル(対応記録内訳)*/
	private static final String D_TBL_NAME_CR_T_TAIOKRK_UCWK = "CR_T_TAIOKRK_UCWK";

	/** テーブル(対応記録内訳カテゴリー)*/
	private static final String D_TBL_NAME_CR_T_TAIOKRK_UW_CTGR = "CR_T_TAIOKRK_UW_CTGR";

	/** テーブル(資料送付)*/
	private static final String D_TBL_NAME_CR_T_ATICLE_SOHU = "CR_T_ATICLE_SOHU";

	/** テーブル(資料送付記録)*/
	private static final String D_TBL_NAME_CR_T_ATICLE_SOHU_KRK = "CR_T_ATICLE_SOHU_KRK";

	/** テーブル(対応履歴電子ファイル管理)*/
	private static final String D_TBL_NAME_CR_T_TORK_EFILE_KNRI = "CR_T_TORK_EFILE_KNRI";

	/** テーブル(対応記録)*/
	private static final String D_TBL_NAME_CR_T_TAIO_KIROK = "CR_T_TAIO_KIROK";

	/** SQL定義キー(CR_UPDATE_001)*/
	private static final String CK_T_PROSCST_CR_UPDATE_001 = "CR_UPDATE_001";

	/** SQL定義キー(CR_UPDATE_001)*/
	private static final String CC_T_EFILE_KANRI_CR_UPDATE_001 = "CR_UPDATE_001";

	/** SQL定義キー(CR_UPDATE_002)*/
	private static final String CC_T_EFILE_KANRI_CR_UPDATE_002 = "CR_UPDATE_002";

	/** SQL定義キー(CR_UPDATE_003)*/
	private static final String CC_T_EFILE_KANRI_CR_UPDATE_003 = "CR_UPDATE_003";

	/** SQL定義キー(CR_UPDATE_003)*/
	private static final String CC_T_TEMP_FILE_CR_UPDATE_003 = "CR_UPDATE_003";

	/** SQL定義キー(CR_UPDATE_004)*/
	private static final String CC_T_TEMP_FILE_CR_UPDATE_004 = "CR_UPDATE_004";

	/** SQL定義キー(CR_UPDATE_004)*/
	private static final String CR_T_TAIOKRK_DTL_CR_UPDATE_004 = "CR_UPDATE_004";

	/** SQL定義キー(CR_UPDATE_002)*/
	private static final String CR_T_TAIOKRK_UCWK_CR_UPDATE_002 = "CR_UPDATE_002";

	/** SQL定義キー(CR_UPDATE_002)*/
	private static final String CR_T_TAIOKRK_UW_CTGR_CR_UPDATE_002 = "CR_UPDATE_002";

	/** SQL定義キー(CR_UPDATE_002)*/
	private static final String CR_T_ATICLE_SOHU_CR_UPDATE_002 = "CR_UPDATE_002";

	/** SQL定義キー(CR_UPDATE_003)*/
	private static final String CR_T_ATICLE_SOHU_KRK_CR_UPDATE_003 = "CR_UPDATE_003";

	/** SQL定義キー(CR_UPDATE_004)*/
	private static final String CR_T_TORK_EFILE_KNRI_CR_UPDATE_004 = "CR_UPDATE_004";

	/** SQL定義キー(CR_UPDATE_008)*/
	private static final String CR_T_TAIO_KIROK_CR_UPDATE_008 = "CR_UPDATE_008";

	/** SQL定義キー(CR_SELECT_007)*/
	private static final String CK_T_PROSCST_CR_SELECT_007 = "CR_SELECT_007";

	/** SQL定義キー(CR_UPDATE_002)*/
	private static final String CK_T_PROSCST_CR_UPDATE_002 = "CR_UPDATE_002";

	/** テーブルアクセスクラス(問合せ客)*/
	private JBSbatSQLAccess db_CK_T_PROSCST = null;

	/** テーブルアクセスクラス(電子ファイル管理)*/
	private JBSbatSQLAccess db_CC_T_EFILE_KANRI = null;

	/** テーブルアクセスクラス(添付ファイル)*/
	private JBSbatSQLAccess db_CC_T_TEMP_FILE = null;

	/** テーブルアクセスクラス(対応記録明細)*/
	private JBSbatSQLAccess db_CR_T_TAIOKRK_DTL = null;

	/** テーブルアクセスクラス(対応記録内訳)*/
	private JBSbatSQLAccess db_CR_T_TAIOKRK_UCWK = null;

	/** テーブルアクセスクラス(対応記録内訳カテゴリー)*/
	private JBSbatSQLAccess db_CR_T_TAIOKRK_UW_CTGR = null;

	/** テーブルアクセスクラス(資料送付)*/
	private JBSbatSQLAccess db_CR_T_ATICLE_SOHU = null;

	/** テーブルアクセスクラス(資料送付記録)*/
	private JBSbatSQLAccess db_CR_T_ATICLE_SOHU_KRK = null;

	/** テーブルアクセスクラス(対応履歴電子ファイル管理)*/
	private JBSbatSQLAccess db_CR_T_TORK_EFILE_KNRI = null;

	/** テーブルアクセスクラス(対応記録)*/
	private JBSbatSQLAccess db_CR_T_TAIO_KIROK = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 未加入顧客削除対象問合せ期間(月) */
	private int delKikan = 0;

	/** 削除データファイル保存先パス */
	private String outputPath = null;

	/**
	 * ファイル名のプレフィックス
	 */
	private static final String PREFIX_FILE_NM = "KKIFI029002_";

	/**
	 * 指定拡張子　データファイル用
	 */
	private static final String EXT_DATA_FILE = ".csv";

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CK_T_PROSCST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_PROSCST);
		db_CC_T_EFILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_EFILE_KANRI);
		db_CC_T_TEMP_FILE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_TEMP_FILE);
		db_CR_T_TAIOKRK_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TAIOKRK_DTL);
		db_CR_T_TAIOKRK_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TAIOKRK_UCWK);
		db_CR_T_TAIOKRK_UW_CTGR = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TAIOKRK_UW_CTGR);
		db_CR_T_ATICLE_SOHU = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_ATICLE_SOHU);
		db_CR_T_ATICLE_SOHU_KRK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_ATICLE_SOHU_KRK);
		db_CR_T_TORK_EFILE_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TORK_EFILE_KNRI);
		db_CR_T_TAIO_KIROK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TAIO_KIROK);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		// (1) プロパティーファイル取得
		checkProperty();

		// (2) 削除データファイル保存先パス取得
		outputPath = getOutputPath();

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * プロパティーチェック
	 * @throws Exception 例外
	 */
	private void checkProperty() throws Exception
	{
		// プロパティーチェック

		// 未加入顧客削除対象問合せ期間(月)
		String kikan = JCRBatCommon.getApplicationConst("CR_MI_KANYU_CUST_DEL_KIKAN_MON");
		if (kikan == null || "".equals(kikan.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_MI_KANYU_CUST_DEL_KIKAN_MON"});
		}
		else
		{
			if (!(JCRBatCommon.isHannkakuSuuji1(kikan)))
			{
				// ECRB0230TW	%1%の属性が正しくありません。(属性:%2% 値:%3%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0230TW,
												new String[]{"プロパティー(未加入顧客削除対象問合せ期間(月))", "半角数字", kikan});
			}
			delKikan = Integer.parseInt(kikan);
			super.logPrint.printDebugLog("未加入顧客削除対象問合せ期間(月):" + delKikan);
		}
	}

	/**
	 * 削除データファイル保存先パスを取得する
	 * @return 削除データファイル保存先パス
	 * @throws Exception 例外
	 */
	private String getOutputPath() throws Exception
	{
		// シェルで${SEND_DIR}を設定
		String path = super.commonItem.getFreeItem();
		super.logPrint.printDebugLog("削除データファイル保存先パス:" + path);

		if (path == null || "".equals(path))
		{
			// ECRB0190KW	%1%の内容が正しくありません。（%2%）
			String[] logParam = new String[]{"シェル引数", "削除データファイル保存先パス未定義"};
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0190KW, logParam);
		}
		else
		{
			File outputFilePath = JCRUtilCommon.checkDirExist(path);
			if (outputFilePath == null)
			{
				// 存在しない場合
				// ECRB0160KW:指定されたパスが存在しません。(%1%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0160KW, new String[]{path});
			}
			super.logPrint.printDebugLog("削除データファイルが配置されるディレクトリーパス:" + outputFilePath);
		}
		return path;
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		// 削除対象問合せ客番号を保持するList
		List<String> deleteDataList = null;

		// システム日時
		String sysDtms = JCRBatCommon.getSysDateTimeStamp();

		// 削除条件設定

		// システム日時から削除対象期間を差し引いた日時の算出
		String tgtDtms = JCRBatCommon.addMonth(sysDtms.substring(0, 8), (-1 * delKikan));
		tgtDtms = tgtDtms + sysDtms.substring(8);		// 時間部分付加

		String[] params1 = new String[] {
				sysDtms,
				commonItem.getBatchUserId(),
				tgtDtms,
				tgtDtms
		};

		// (1) 対象問合せ客事前更新
		int dataCount = executeCK_T_PROSCST_CR_UPDATE_001(params1);

		// 処理件数ログ出力
		JCRBatCommon.printShoriCountLog(commonItem, "対象問合せ客事前更新件数", dataCount);

		if (dataCount > 0)
		{
			int count = 0;

			String[] params2 = new String[] {
					sysDtms,
					commonItem.getBatchUserId(),
					sysDtms,
					commonItem.getBatchUserId()
			};

			// (2) 電子ファイル管理論理削除(受信メールの添付ファイル関連)
			count = executeCC_T_EFILE_KANRI_CR_UPDATE_001(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "電子ファイル管理論理削除件数(受信メールの添付ファイル関連)", count);

			// (3) 電子ファイル管理論理削除(送信メールの添付ファイル関連)
			count = executeCC_T_EFILE_KANRI_CR_UPDATE_002(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "電子ファイル管理論理削除件数(送信メールの添付ファイル関連)", count);

			// (4) 電子ファイル管理論理削除(問合せの添付ファイル関連)
			count = executeCC_T_EFILE_KANRI_CR_UPDATE_003(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "電子ファイル管理論理削除件数(問合せの添付ファイル関連)", count);

			// (5) 添付ファイル論理削除(受信メール関連)
			count = executeCC_T_TEMP_FILE_CR_UPDATE_003(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "添付ファイル論理削除件数(受信メール関連)", count);

			// (6) 添付ファイル論理削除(送信メール関連)
			count = executeCC_T_TEMP_FILE_CR_UPDATE_004(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "添付ファイル論理削除件数(送信メール関連)", count);

			// (7) 対応記録明細論理削除
			count = executeCR_T_TAIOKRK_DTL_CR_UPDATE_004(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "対応記録明細論理削除件数", count);

			// (8) 対応記録内訳論理削除
			count = executeCR_T_TAIOKRK_UCWK_CR_UPDATE_002(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "対応記録内訳論理削除件数", count);

			// (9) 対応記録内訳カテゴリー論理削除
			count = executeCR_T_TAIOKRK_UW_CTGR_CR_UPDATE_002(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "対応記録内訳カテゴリー論理削除件数", count);

			// (10) 資料送付論理削除
			count = executeCR_T_ATICLE_SOHU_CR_UPDATE_002(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "資料送付論理削除件数", count);

			// (11) 資料送付記録論理削除
			count = executeCR_T_ATICLE_SOHU_KRK_CR_UPDATE_003(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "資料送付記録論理削除件数", count);

			// (12) 対応履歴電子ファイル管理論理削除
			count = executeCR_T_TORK_EFILE_KNRI_CR_UPDATE_004(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "対応履歴電子ファイル管理論理削除件数", count);

			// (13) 対応記録論理削除
			count = executeCR_T_TAIO_KIROK_CR_UPDATE_008(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "対応記録論理削除件数", count);

			// (14) 削除対象問合せ客退避
			deleteDataList = getDeleteProscstList();

			// (15) 問合せ客論理削除
			count = executeCK_T_PROSCST_CR_UPDATE_002(params2);

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "問合せ客論理削除件数", count);
		}

		// (16) ファイル出力
		String outputFilePath = outputPath
								+ JCRStrConst.FILE_KUGIRI
								+ PREFIX_FILE_NM
								+ JCRBatCommon.getSysDateTime()
								+ EXT_DATA_FILE;
		outputFile(deleteDataList, outputFilePath);

		// (17) コミット
		super.commit();

		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CK_T_PROSCST.close();
		db_CC_T_EFILE_KANRI.close();
		db_CC_T_TEMP_FILE.close();
		db_CR_T_TAIOKRK_DTL.close();
		db_CR_T_TAIOKRK_UCWK.close();
		db_CR_T_TAIOKRK_UW_CTGR.close();
		db_CR_T_ATICLE_SOHU.close();
		db_CR_T_ATICLE_SOHU_KRK.close();
		db_CR_T_TORK_EFILE_KNRI.close();
		db_CR_T_TAIO_KIROK.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/

	/**
	 * SQLKEY(CR_SELECT_007)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_PROSCST_CR_SELECT_007(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		// DBアクセスを実行します
		db_CK_T_PROSCST.selectBySqlDefine(paramList, CK_T_PROSCST_CR_SELECT_007);
	}

	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * SQLKEY(CR_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	問合せ客番号
	 *		 	更新年月日時分秒
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCK_T_PROSCST_CR_UPDATE_001(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アクセスを実行します
		return db_CK_T_PROSCST.executeBySqlDefine(paramList, CK_T_PROSCST_CR_UPDATE_001);
	}

	/**
	 * SQLKEY(CR_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCC_T_EFILE_KANRI_CR_UPDATE_001(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アクセスを実行します
		return db_CC_T_EFILE_KANRI.executeBySqlDefine(paramList, CC_T_EFILE_KANRI_CR_UPDATE_001);
	}

	/**
	 * SQLKEY(CR_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCC_T_EFILE_KANRI_CR_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アクセスを実行します
		return db_CC_T_EFILE_KANRI.executeBySqlDefine(paramList, CC_T_EFILE_KANRI_CR_UPDATE_002);
	}

	/**
	 * SQLKEY(CR_UPDATE_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCC_T_EFILE_KANRI_CR_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());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		return db_CC_T_EFILE_KANRI.executeBySqlDefine(paramList, CC_T_EFILE_KANRI_CR_UPDATE_003);
	}

	/**
	 * SQLKEY(CR_UPDATE_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCC_T_TEMP_FILE_CR_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());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		return db_CC_T_TEMP_FILE.executeBySqlDefine(paramList, CC_T_TEMP_FILE_CR_UPDATE_003);
	}

	/**
	 * SQLKEY(CR_UPDATE_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCC_T_TEMP_FILE_CR_UPDATE_004(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アクセスを実行します
		return db_CC_T_TEMP_FILE.executeBySqlDefine(paramList, CC_T_TEMP_FILE_CR_UPDATE_004);
	}

	/**
	 * SQLKEY(CR_UPDATE_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCR_T_TAIOKRK_DTL_CR_UPDATE_004(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アクセスを実行します
		return db_CR_T_TAIOKRK_DTL.executeBySqlDefine(paramList, CR_T_TAIOKRK_DTL_CR_UPDATE_004);
	}

	/**
	 * SQLKEY(CR_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCR_T_TAIOKRK_UCWK_CR_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アクセスを実行します
		return db_CR_T_TAIOKRK_UCWK.executeBySqlDefine(paramList, CR_T_TAIOKRK_UCWK_CR_UPDATE_002);
	}

	/**
	 * SQLKEY(CR_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCR_T_TAIOKRK_UW_CTGR_CR_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アクセスを実行します
		return db_CR_T_TAIOKRK_UW_CTGR.executeBySqlDefine(paramList, CR_T_TAIOKRK_UW_CTGR_CR_UPDATE_002);
	}

	/**
	 * SQLKEY(CR_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCR_T_ATICLE_SOHU_CR_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アクセスを実行します
		return db_CR_T_ATICLE_SOHU.executeBySqlDefine(paramList, CR_T_ATICLE_SOHU_CR_UPDATE_002);
	}

	/**
	 * SQLKEY(CR_UPDATE_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCR_T_ATICLE_SOHU_KRK_CR_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());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		return db_CR_T_ATICLE_SOHU_KRK.executeBySqlDefine(paramList, CR_T_ATICLE_SOHU_KRK_CR_UPDATE_003);
	}

	/**
	 * SQLKEY(CR_UPDATE_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCR_T_TORK_EFILE_KNRI_CR_UPDATE_004(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アクセスを実行します
		return db_CR_T_TORK_EFILE_KNRI.executeBySqlDefine(paramList, CR_T_TORK_EFILE_KNRI_CR_UPDATE_004);
	}

	/**
	 * SQLKEY(CR_UPDATE_008)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCR_T_TAIO_KIROK_CR_UPDATE_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());

		// DBアクセスを実行します
		return db_CR_T_TAIO_KIROK.executeBySqlDefine(paramList, CR_T_TAIO_KIROK_CR_UPDATE_008);
	}

	/**
	 * SQLKEY(CR_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return 処理件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCK_T_PROSCST_CR_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アクセスを実行します
		return db_CK_T_PROSCST.executeBySqlDefine(paramList, CK_T_PROSCST_CR_UPDATE_002);
	}

	/**
	 * 削除対象問合せ客取得
	 * @return 削除対象問合せ客番号のList
	 * @throws Exception 例外
	 */
	private List<String> getDeleteProscstList() throws Exception
	{
		List<String> dataList = new ArrayList<String>();
		// 削除対象問合せ客取得
		executeCK_T_PROSCST_CR_SELECT_007(null);
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_CK_T_PROSCST);
		if (selectedDataList != null)
		{
			for (int i = 0; i < selectedDataList.size(); i++)
			{
				JBSbatCommonDBInterface selectedData = selectedDataList.get(i);
				dataList.add(selectedData.getString(JBSbatCK_T_PROSCST.PROSCST_NO));
			}
		}
		return dataList;
	}

	/**
	 * 削除データファイル出力
	 * @param deleteTiawsKyakuNoList 削除問合せ客番号リスト
	 * @param outputFilePath 出力ファイルパス
	 * @throws Exception 例外
	 */
	private void outputFile(List<String> deleteTiawsKyakuNoList, String outputFilePath) throws Exception
	{
		// ファイル出力オブジェクト
		JBSbatBusinessFileUtil outputFileObj = null;

		try
		{
			outputFileObj =
				JCRBatCommon.createBusinessFileUtil(outputFilePath, JCRStrConst.DEFAULT_ENCODE, JCRStrConst.KAIGYO_CD, JCRStrConst.STR_HALF_COMMA);

			if (deleteTiawsKyakuNoList != null)
			{
				for (int i = 0; i < deleteTiawsKyakuNoList.size(); i++)
				{
					ArrayList<String> outputDataList = makeOneLineData(deleteTiawsKyakuNoList.get(i));

					// ファイル書き込み
					JCRBatCommon.printBusinessFileUtil(outputFileObj, outputDataList);
				}
			}
		}
		finally
		{
			if (outputFileObj != null)
			{
				outputFileObj.close();
			}
		}
	}

	/**
	 * 出力データ1行生成
	 * @param tiawsKyakuNo 問合せ客番号
	 * @return 生成した1行分のリスト
	 * @throws Exception 例外
	 */
	private ArrayList<String> makeOneLineData(String tiawsKyakuNo) throws Exception
	{
		// 出力レコード1行生成
		ArrayList<String> outputDataList = new ArrayList<String>();

		outputDataList.add(JCRUtilCommon.addDblQut(null));			// サービス契約番号
		outputDataList.add(JCRUtilCommon.addDblQut(tiawsKyakuNo));	// 問合せ客番号
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// サービス契約内訳番号
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// サービス契約回線内訳番号
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// オプションサービス契約番号
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// サブオプションサービス契約番号
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// 機器提供サービス契約番号
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// 請求オプションサービス契約番号
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// サービスコード
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// 料金グループコード
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// 料金コースコード
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// オプションサービスコード
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// サブオプションサービスコード
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// 機器提供サービスコード
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// 請求オプションサービスコード
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// 新規申込書番号
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// 請求契約番号
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// ISP認証ID
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// サービス解約年月日
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// サービスキャンセル年月日
		outputDataList.add(JCRUtilCommon.addDblQut(null));			// 削除実施日

		return outputDataList;
	}

}
