/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JEKK1091D010TPMA
*	ソースファイル名：JEKK1091D010TPMA.java
*	作成者			：富士通
*	日付			：2013年05月29日
*＜機能概要＞
*	進捗登録の副次処理を呼び出す部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2013/05/29	富士通		新規作成
*
**********************************************************************/

package eo.ejb.cbs.mainproc;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;
import com.fujitsu.futurity.model.ejb.common.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;

import eo.ejb.cbm.entity.KK1131ETMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg1List;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JKKModelConst;
import eo.ejb.common.db.JKKejbDBAUtil;
import eo.ejb.common.db.JKKejbKK1131DBABase;

/**
 * <p>
 * 進捗登録の顧客独自処理部品クラスです。
 * </p>
 * @author 富士通
 */
public class JEKK1091D010TPMA implements TemplateMainHandler
{
	
	/**
	 * <p>
	 * 進捗登録のDBアクセスを行います。（異動理由スキーマへの登録）
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 */
	public void execDBAccess(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 開始ログ出力
		JSYejbLog.println(JSYejbLog.DEBUG, getClass(), "call:JEKK1091D010TPMA#execDBAccess");
		
		// inCBSMsgの異動理由明細を取得
		CAANMsg[] CBSMsg1List = inCBSMsg.getCAANMsgList(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST);
		
		// 異動理由明細がある場合のみ、異動理由に登録する
		if(CBSMsg1List != null)
		{
			// 明細が存在した場合、明細分、処理を繰り返す
			for (int i=0; i < CBSMsg1List.length; i++)
			{
		 		CAANMsg inETMsgIdoRsn = new CAANMsg(KK1131ETMsg.class.getName());
		 		
		 		if (CBSMsg1List[i].getString(EKK1091D010CBSMsg1List.IDO_RSN_CD) != null)
		 		{
		 			String idoRsnNo = JKKModelCommon.getIdoRsnNoKK1131(inCBSMsg, inContext);
		 			
			 		// 異動区分
			 		inETMsgIdoRsn.set(KK1131ETMsg.IDO_DIV, inCBSMsg.getString(EKK1091D010CBSMsg.IDO_DIV));
			 		// 異動年月日時分秒
			 		inETMsgIdoRsn.set(KK1131ETMsg.IDO_DTM, inCBSMsg.getString(EKK1091D010CBSMsg.IDO_DTM));
			 		// 異動理由コード
			 		inETMsgIdoRsn.set(KK1131ETMsg.IDO_RSN_CD, CBSMsg1List[i].getString(EKK1091D010CBSMsg1List.IDO_RSN_CD));
			 		// 異動理由番号
			 		inETMsgIdoRsn.set(KK1131ETMsg.IDO_RSN_NO, idoRsnNo);
			 		
			 		// 異動理由未存在関連チェック
	 				// 既にレコードが存在していた場合、登録処理を行わない
		 			if(new JKKejbKK1131DBABase().findByPrimaryKey(inETMsgIdoRsn) != null){
		 				int result = 0;
		 				String errFlag = "EA";
		 				
	 					inCBSMsg.set(EKK1091D010CBSMsg.IDO_DIV_ERR, errFlag);

	 					if ("W".equals(errFlag.substring(0, 1)))
	 					{
	 						result = StatusCodes.WARNING;
	 					}
	 					else
	 					{
	 						result = StatusCodes.RELATION_ERR;
	 					}
		 				// ステータスのセット
		 				if (result > inCBSMsg.getInt(JCMConstants.STATUS_INT_KEY))
		 				{
		 					inCBSMsg.set(JCMConstants.STATUS_INT_KEY, result);
		 				}
		 				return;
		 			}
			 		
			 		// サービス契約番号
			 		inETMsgIdoRsn.set(KK1131ETMsg.SVC_KEI_NO, inCBSMsg.getString(EKK1091D010CBSMsg.SVC_KEI_NO));
			 		// 異動理由メモ
			 		inETMsgIdoRsn.set(KK1131ETMsg.IDO_RSN_MEMO, CBSMsg1List[i].getString(EKK1091D010CBSMsg1List.IDO_RSN_MEMO));
			 		// 登録年月日時分秒
			 		inETMsgIdoRsn.set(KK1131ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			 		// 登録オペレータアカウント
			 		inETMsgIdoRsn.set(KK1131ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			 		// 更新年月日時分秒
			 		inETMsgIdoRsn.set(KK1131ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			 		// 更新オペレータアカウント
			 		inETMsgIdoRsn.set(KK1131ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			 		// 無効フラグ
			 		inETMsgIdoRsn.set(KK1131ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
			 		
			 		JKKejbDBAUtil dbaUtil = new JKKejbDBAUtil(inCBSMsg);
			 		dbaUtil.create(inETMsgIdoRsn); 
		 		}
			}
		}

		// 終了ログ出力
		JSYejbLog.println(JSYejbLog.DEBUG, getClass(), "end:JEKK1091D010TPMA#execDBAccess");
	}

}
