/*******************************************************************************
* All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
* システム名        ：eo顧客基幹システム構築
* モジュール名      ：JECR0011C010TPMA
* ソースファイル名  ：JECR0011C010TPMA.java
* 作成者            ：富士通
* 日付              ：2011年08月06日
*＜機能概要＞
* 対応記録エスカレーション開始（キューBOX）顧客独自処理部品クラス
*＜修正履歴＞
* バージョン    修正日      修正者      修正内容
* ｖ1.00.00
*
********************************************************************************/

package eo.ejb.cbs.mainproc;

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.TemplateMainHandler;

import eo.common.constant.JCRStrConst;
import eo.ejb.cbm.entity.CR0021ETMsg;
import eo.ejb.cbm.entity.CR0101ETMsg;
import eo.ejb.cbm.entity.CR0111ETMsg;
import eo.ejb.cbm.entity.CR0361ETMsg;
import eo.ejb.cbm.entity.CR0221ETMsg;
import eo.ejb.cbs.cbsmsg.ECR0011C010CBSMsg;
import eo.ejb.common.db.JCRejbCR0101SecProc;
import eo.ejb.common.db.JCRejbCR0111SecProc;
import eo.ejb.common.db.JCRejbCR0361SecProc;
import eo.ejb.common.db.JCRejbCR0221SecProc;

/**
 * <p>
 * 対応記録エスカレーション開始（キューBOX）顧客独自処理部品クラスです。
 * </p>
 * @author 富士通
 */

public class JECR0011C010TPMA implements TemplateMainHandler 
{
	/**
	 * コンストラクタです。
	 */
	public JECR0011C010TPMA()
	{
		super();
	}
	
	/**
	 * <p>
	 * 対応記録エスカレーション開始(キューBOX)顧客独自処理部品クラスです。
	 * </p>
	 * @param inCBSMsg 概念スキーマのCBSメッセージ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @throws CAANException 
	 */
	
	public static void invoke(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANException
	{

		// -------------------------------------------------- //
		// MYBOX副次処理部品呼出処理
		// -------------------------------------------------- //
		// (1)MYBOXのETメッセージを生成
		CAANMsg cr0101ETMsg = new CAANMsg((CR0101ETMsg.class.getName()));

		// 概念スキーマのCBSメッセージからMYBOXのETメッセージに更新値をコピーする
		cr0101ETMsg.set(CR0101ETMsg.UPD_OPEACNT, inCBSMsg.getString(ECR0011C010CBSMsg.OPERATORID));
		// CBSメッセージから対応ユーザーIDを取得(MYBOXの検索条件となる)
		String userID = inCBSMsg.getString(ECR0011C010CBSMsg.TAIO_USER_ID);

		// (2)MYBOX副次処理部品を呼出し、MYBOXの現在格納数をマイナス1する
		new JCRejbCR0101SecProc().calculateMyboxKakunosu(inCBSMsg, inContext, cr0101ETMsg, userID, -1);

		// -------------------------------------------------- //
		// キューBOX副次処理部品呼出処理
		// -------------------------------------------------- //
		// (3)キューBOXのETメッセージを生成
		CAANMsg cr0111ETMsg = new CAANMsg((CR0111ETMsg.class.getName()));

		// 概念スキーマのCBSメッセージからキューBOXのETメッセージに更新値をコピーする
		cr0111ETMsg.set(CR0111ETMsg.UPD_OPEACNT, inCBSMsg.getString(ECR0011C010CBSMsg.OPERATORID));
		// CBSメッセージからキューBOX番号を取得(キューBOXの検索条件となる)
		String queboxNo = inCBSMsg.getString(ECR0011C010CBSMsg.QUE_BOX_NO);

		// (4)キューBOX副次処理部品を呼出し、キューBOXの現在格納数をプラス1する
		CAANMsg resultMsg = new JCRejbCR0111SecProc().calculateQueboxKakunosu(inCBSMsg, inContext, cr0111ETMsg, queboxNo, 1);
		if (resultMsg == null)
		{
			return;
		}

		// -------------------------------------------------- //
		// キューBOX別問合せモニタワーク副次処理部品呼出処理
		// -------------------------------------------------- //
		// キューBOX別問合せモニタワークのETメッセージを生成
		CAANMsg cr0361ETMsg = new CAANMsg((CR0361ETMsg.class.getName()));

		// 概念スキーマのCBSメッセージからキューBOX別問合せモニタワークのETメッセージに更新値をコピーする
		// 業務個別設定組織コード
		cr0361ETMsg.set(CR0361ETMsg.WKKBT_ORG_CD, inCBSMsg.getString(ECR0011C010CBSMsg.ESCLA_SAKI_WKSO_CD));
		cr0361ETMsg.set(CR0361ETMsg.QUE_BOX_NO, inCBSMsg.getString(ECR0011C010CBSMsg.QUE_BOX_NO));
		cr0361ETMsg.set(CR0361ETMsg.QUE_BOX_NM, inCBSMsg.getString(ECR0011C010CBSMsg.ESCLA_SAKI_QUE_BOX_NM));
		cr0361ETMsg.set(CR0361ETMsg.TAIO_KIROK_NO, inCBSMsg.getString(ECR0011C010CBSMsg.TAIO_KIROK_NO));
		cr0361ETMsg.set(CR0361ETMsg.DATA_SBT_CD, JCRStrConst.DATA_SBT_CD_UKETSUKE);
		cr0361ETMsg.set(CR0361ETMsg.ADD_OPEACNT, inCBSMsg.getString(ECR0011C010CBSMsg.OPERATORID));
		cr0361ETMsg.set(CR0361ETMsg.UPD_OPEACNT, inCBSMsg.getString(ECR0011C010CBSMsg.OPERATORID));

		// (5)キューBOX別問合せモニタワーク副次処理部品を呼出し、キューBOX別問合せモニタワークを登録する
		new JCRejbCR0361SecProc().addQueboxToiawaseMonitorWork(inCBSMsg, inContext, cr0361ETMsg);
		
		// --------------------------------------------------------------- //
		// エスカレーション先別別問合せモニタワーク副次処理部品呼出処理
		// --------------------------------------------------------------- //
		// キューBOX別問合せモニタワークのETメッセージを生成
		CAANMsg cr0221ETMsg = new CAANMsg((CR0221ETMsg.class.getName()));

		// 概念スキーマのCBSメッセージからキューBOX別問合せモニタワークのETメッセージに更新値をコピーする
		cr0221ETMsg.set(CR0221ETMsg.ESCLA_MOTO_WKSO_CD, inCBSMsg.getString(ECR0011C010CBSMsg.WKKBT_ORG_CD));
		cr0221ETMsg.set(CR0221ETMsg.ESCLA_SAKI_WKSO_CD, inCBSMsg.getString(ECR0011C010CBSMsg.ESCLA_SAKI_WKSO_CD));
		cr0221ETMsg.set(CR0221ETMsg.ESCLA_SAKI_WKSO_NM, inCBSMsg.getString(ECR0011C010CBSMsg.ESCLA_SAKI_WKSO_NM));
		cr0221ETMsg.set(CR0221ETMsg.ESCLA_SAKI_QUE_BOX_NO, inCBSMsg.getString(ECR0011C010CBSMsg.QUE_BOX_NO));
		cr0221ETMsg.set(CR0221ETMsg.ESCLA_SAKI_QUE_BOX_NM, inCBSMsg.getString(ECR0011C010CBSMsg.ESCLA_SAKI_QUE_BOX_NM));
		cr0221ETMsg.set(CR0021ETMsg.TAIO_KIROK_NO, inCBSMsg.getString(ECR0011C010CBSMsg.TAIO_KIROK_NO));
		cr0221ETMsg.set(CR0221ETMsg.ADD_OPEACNT, inCBSMsg.getString(ECR0011C010CBSMsg.OPERATORID));
		cr0221ETMsg.set(CR0221ETMsg.UPD_OPEACNT, inCBSMsg.getString(ECR0011C010CBSMsg.OPERATORID));
		
		// (6)エスカレーション先別問合せモニタワーク副次処理部品を呼び出し、エスカレーション先別問合せモニタワークを登録する
		new JCRejbCR0221SecProc().addQueboxToiawaseMonitorWork(inCBSMsg, inContext, cr0221ETMsg);
	}

}
