/*******************************************************************************
 *	 All Rights reserved,Copyright (c) K-Opticom 
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム構築
 *	モジュール名	：JCRejbCR0101SecProc
 *	ソースファイル名：JCRejbCR0101SecProc.java
 *	作成者			：富士通
 *	日付			：2011年06月04日
 *＜機能概要＞
 *	MYBOX副次処理部品
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00
 *
 ********************************************************************************/

package eo.ejb.common.db;

import com.fujitsu.futurity.model.base.CAANCreateException;
import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateSQLEntity;

import eo.common.constant.JCRStrConst;
import eo.ejb.cbm.entity.CR0461ETMsg;
import eo.ejb.cbm.entity.CR0461LE;
import eo.ejb.common.JCRModelCommon;

/**
 * 対応記録内訳抽出ワーク登録副次処理部品<p>
 * <BR>
 * @author 富士通
 */
public class JCRejbCR0461SecProc extends TemplateSQLEntity
{
	/**
	 * コンストラクタです。
	 */
	public JCRejbCR0461SecProc()
	{
		super();
	}

	/**
	 * 対応記録内訳抽出ワーク登録処理。<br>
	 * <br>
	 * 対応記録内訳抽出ワークにデータを新規登録する。
	 * 
	 * @param inCBSMsg CBSメッセージ
	 * @param inContext ディスパッチコンテキスト
	 * @param inETMsg ETメッセージ
	 * @param inTiokrUwCstWkAddDiv 対応記録内訳抽出ワーク作成区分
	 * @throws CAANException CAANException
	 */
	public void addTaiokrkUcwkChshtWork(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg inETMsg
			, String inTiokrUwCstWkAddDiv) throws CAANException
	{

		// (1) 対応記録内訳抽出ワークよりデータを抽出する。
		CAANMsg[] retTiokrUwCstWk = getTiokrUwCstWk(inETMsg, inTiokrUwCstWkAddDiv);
		
		// (2) データが存在すれば、同日発生データのため、登録処理を行わない。
		if (retTiokrUwCstWk != null && retTiokrUwCstWk.length > 0)
		{
			return;
		}
		// (3) データが存在しなければ登録処理を行う。
		addEcr0461(inETMsg, inTiokrUwCstWkAddDiv);
	}

	/**
	 * 対応記録内訳抽出ワーク取得処理.<br>
	 * 
	 * @param inETMsg ETメッセージ
	 * @param inTiokrUwCstWkAddDiv 対応記録内訳抽出ワーク作成区分
	 * @return 対応記録内訳抽出ワーク
	 * @throws CAANException CAANException
	 */
	private CAANMsg[] getTiokrUwCstWk(CAANMsg inETMsg, String inTiokrUwCstWkAddDiv) throws CAANException
	{

		// 対応記録内訳抽出ワークのETメッセージ
		CAANMsg cr0461ETMsg = new CAANMsg(CR0461ETMsg.class.getName());
		// 抽出データ種別コード
		cr0461ETMsg.set(CR0461ETMsg.CHSHT_DATA_SBT_CD, inTiokrUwCstWkAddDiv);
		// 対応記録番号
		cr0461ETMsg.set(CR0461ETMsg.TAIO_KIROK_NO, inETMsg.getString(CR0461ETMsg.TAIO_KIROK_NO));
		// 対応記録内訳番号
		cr0461ETMsg.set(CR0461ETMsg.TAIO_KIROK_UCWK_NO, inETMsg.getString(CR0461ETMsg.TAIO_KIROK_UCWK_NO));
		
		return new CR0461LE().findByCondition(cr0461ETMsg);

	}

	/**
	 * 対応記録内訳抽出ワーク登録処理.<br>
	 * 対応記録内訳抽出ワークを登録します。
	 * @param inETMsg ETメッセージ
	 * @param inTiokrUwCstWkAddDiv 対応記録内訳抽出ワーク作成区分
	 * @throws CAANCreateException 
	 */
	private void addEcr0461(CAANMsg inETMsg, String inTiokrUwCstWkAddDiv) throws CAANCreateException
	{
		CAANMsg addETMsg = new CAANMsg(CR0461ETMsg.class.getName());

		// 対応記録内訳抽出ワークのETメッセージに以下の内容を設定し登録を行う。
		// 抽出データ種別コード
		addETMsg.set(CR0461ETMsg.CHSHT_DATA_SBT_CD, inTiokrUwCstWkAddDiv);
		// 対応記録番号
		addETMsg.set(CR0461ETMsg.TAIO_KIROK_NO, inETMsg.getString(CR0461ETMsg.TAIO_KIROK_NO));
		// 対応記録内訳番号
		addETMsg.set(CR0461ETMsg.TAIO_KIROK_UCWK_NO, inETMsg.getString(CR0461ETMsg.TAIO_KIROK_UCWK_NO));
		// 登録年月日時分秒
		addETMsg.set(CR0461ETMsg.ADD_DTM, JCRModelCommon.getSysDateTimeStamp());
		// 登録オペレータアカウント
		addETMsg.set(CR0461ETMsg.ADD_OPEACNT, inETMsg.getString(CR0461ETMsg.ADD_OPEACNT));
		// 更新年月日時分秒
		addETMsg.set(CR0461ETMsg.UPD_DTM, JCRModelCommon.getSysDateTimeStamp());
		// 更新オペレータアカウント
		addETMsg.set(CR0461ETMsg.UPD_OPEACNT, inETMsg.getString(CR0461ETMsg.UPD_OPEACNT));
		// 無効フラグ
		addETMsg.set(CR0461ETMsg.MK_FLG, JCRStrConst.CD_DIV_MK_FLG_YUKO);

		create(addETMsg);

	}

    /**
     * このエンティティのスキーマの内容を取得します。<br>
     * 業務レベルで実装します。
     * @return スキーマのContents
     */
	@Override
	protected Object[][] getSchemaContents()
	{
		return CR0461ETMsg.getSchemaContents();
	}

    /**
     * このエンティティのスキーマの名を取得します。<br>
     * 業務レベルで実装します。
     * @return スキーマ名
     */
	@Override
	protected String getSchemaName()
	{
		return CR0461ETMsg.class.getName();
	}

    /**
     * このエンティティの参照するテーブル名を取得します。<br>
     * 業務レベルで実装します。
     * @return テーブル名
     */
	@Override
	protected String getTableName()
	{
		return CR0461ETMsg.getTableName();
	}

}
