/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JEKU0081C030TPMA
*	ソースファイル名：JEKU0081C030TPMA.java
*	作成者			：富士通
*	日付			：2012年09月19日
*＜機能概要＞
*	工事案件回線併合の独自処理を呼び出す部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ4.00.00	2012/09/19	FJ)日根		新規作成
*	ｖ8.00.00	2014/04/14	FJ)高橋		【IT2-2014-0000182】
*	ｖ10.00.00	2014/07/31	FJ)川島		【ANK-1918-00-00】ＵＳ管理Ｓ向けｅｏ顧客ＳのＩ／Ｆ改修
********************************************************************************/
package eo.ejb.cbs.mainproc;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
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.common.constant.JKUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbm.entity.KU0011ETMsg;
import eo.ejb.cbm.entity.KU0021ETMsg;
import eo.ejb.cbm.entity.KU0031ETMsg;
import eo.ejb.cbm.entity.KU0041ETMsg;
import eo.ejb.cbm.entity.KU0061ETMsg;
import eo.ejb.cbm.entity.KU0081ETMsg;
import eo.ejb.cbm.entity.KU0091ETMsg;
import eo.ejb.cbs.cbsmsg.EKU0081C030CBSMsg;
import eo.ejb.common.JKUModelCommon;
import eo.ejb.common.JPCModelCommon;
import eo.ejb.common.db.JKUejbKU0011SecProc;
import eo.ejb.common.db.JKUejbKU0021SecProc;
import eo.ejb.common.db.JKUejbKU0031SecProc;
import eo.ejb.common.db.JKUejbKU0041SecProc;
import eo.ejb.common.db.JKUejbKU0061SecProc;
import eo.ejb.common.db.JKUejbKU0081SecProc;
import eo.ejb.common.db.JKUejbKU0091SecProc;

/**
 * <p>
 * 工事案件回線併合の独自処理を呼び出す部品です。
 * </p>
 * @author 富士通
 */
public class JEKU0081C030TPMA implements TemplateMainHandler
{

	/**
	 * 工事受付、仕掛中、工事案件ステータス（受付済〜工事完了済）
	 */
	private static final String[] SKKR_KOJIAK_STAT_ARRAY = 
		{JKUStrConst.CD00474_UK_ZM,
		JKUStrConst.CD00474_IRI_ZM,
		JKUStrConst.CD00474_TAKNI_CHOSA_FIN_ZM,
		JKUStrConst.CD00474_KOCOMP_KETTEI_ZM,
		JKUStrConst.CD00474_TAKNI_CHOSA_RSV_ZM,
		JKUStrConst.CD00474_KR_KAGI_KAIHAT_IRI_ZM,
		JKUStrConst.CD00474_GEMBA_SAGYO_FIN_ZM};
	
	/**
	 * サブスキーマ関連定数
	 */
	
	/** サービスコード：ネット */
	private static final String SVC_CD_NET = "svc_cd_net";
	/** サービスコード：電話 */
	private static final String SVC_CD_TEL = "svc_cd_tel";
	/** サービスコード：ネット＋電話 */
	private static final String SVC_CD_NET_AND_TEL = "svc_cd_net_and_tel";
	
	/** 整合性グループ：ネット */
	private static final String GROUP_NET = "1";
	/** 整合性グループ：テレビ */
	private static final String GROUP_TV = "2";
	
	/** 戻り値の設定キー：ホームネット */
	private static final String INFO_TYPE_HT_NET = "0";
	/** 戻り値の設定キー：ホームネット＋電話 */
	private static final String INFO_TYPE_HT_NET_TEL = "1";
	/** 戻り値の設定キー：マンションネット */
	private static final String INFO_TYPE_MT_NET = "2";
	/** 戻り値の設定キー：マンションネット＋電話 */
	private static final String INFO_TYPE_MT_NET_TEL = "3";
	/** 戻り値の設定キー：ホーム電話 */
	private static final String INFO_TYPE_HT_TEL = "4";
	/** 戻り値の設定キー：マンション電話 */
	private static final String INFO_TYPE_MT_TEL = "5";
	/** 戻り値の設定キー：テレビ */
	private static final String INFO_TYPE_TV = "6";
	
	/** 配列番号:料金グループコード */
	private static final int ARRAY_NO_PRC_GRP_CD = 0;
	/** 配列番号:サービスコード */
	private static final int ARRAY_NO_SVC_CD = 1;
	/** 配列番号:マンション物件コード有無 */
	private static final int ARRAY_NO_MANS_BK_CD = 2;
	/** 配列番号:取得対象スキーマ */
	private static final int ARRAY_NO_SCHEMA = 3;
	/** 配列番号:戻り値の設定キー */
	private static final int ARRAY_NO_RET_KEY = 4;
	/** 配列番号:整合性グループ */
	private static final int ARRAY_NO_GROUP = 5;

	/**
	 * サブスキーマ特定用配列
	 */
	private static final String[][] SUBSCHEMA_ARRAY_2D =
	//	0:料金グループコード					1:サービスコード	2:マンション物件コード有無	3:取得対象スキーマ			4:戻り値の設定キー		5:整合性グループ
	{{	JKUStrConst.CD00133_EOH_HOME,			SVC_CD_NET,			JKUStrConst.UM_NON,			JKUStrConst.SCHEMA_KU0021,	INFO_TYPE_HT_NET,		GROUP_NET	},
	{	JKUStrConst.CD00133_EOH_HOME,			SVC_CD_NET_AND_TEL,	JKUStrConst.UM_NON,			JKUStrConst.SCHEMA_KU0021,	INFO_TYPE_HT_NET_TEL,	GROUP_NET	},
	{	JKUStrConst.CD00133_EOH_MEZON,			SVC_CD_NET,			JKUStrConst.UM_YK,			JKUStrConst.SCHEMA_KU0061,	INFO_TYPE_MT_NET,		GROUP_NET	},
	{	JKUStrConst.CD00133_EOH_MEZON,			SVC_CD_NET_AND_TEL,	JKUStrConst.UM_YK,			JKUStrConst.SCHEMA_KU0061,	INFO_TYPE_MT_NET_TEL,	GROUP_NET	},
	{	JKUStrConst.CD00133_EOH_NTMANS,			SVC_CD_NET,			JKUStrConst.UM_YK,			JKUStrConst.SCHEMA_KU0061,	INFO_TYPE_MT_NET,		GROUP_NET	},
	{	JKUStrConst.CD00133_EOH_NTMANS,			SVC_CD_NET_AND_TEL,	JKUStrConst.UM_YK,			JKUStrConst.SCHEMA_KU0061,	INFO_TYPE_MT_NET_TEL,	GROUP_NET	},
	{	JKUStrConst.CD00133_EOH_TEL,			SVC_CD_TEL,			JKUStrConst.UM_NON,			JKUStrConst.SCHEMA_KU0021,	INFO_TYPE_HT_TEL,		GROUP_NET	},
	{	JKUStrConst.CD00133_EOH_TEL,			SVC_CD_NET_AND_TEL,	JKUStrConst.UM_NON,			JKUStrConst.SCHEMA_KU0021,	INFO_TYPE_HT_NET_TEL,	GROUP_NET	},
	{	JKUStrConst.CD00133_EOH_TEL,			SVC_CD_TEL,			JKUStrConst.UM_YK,			JKUStrConst.SCHEMA_KU0061,	INFO_TYPE_MT_TEL,		GROUP_NET	},
	{	JKUStrConst.CD00133_EOH_TEL,			SVC_CD_NET_AND_TEL,	JKUStrConst.UM_YK,			JKUStrConst.SCHEMA_KU0061,	INFO_TYPE_MT_NET_TEL,	GROUP_NET	},
	{	JKUStrConst.CD00133_EOH_TV_K_CAT,		null,				null,						JKUStrConst.SCHEMA_KU0031,	INFO_TYPE_TV,			GROUP_TV	},
	{	JKUStrConst.CD00133_EOH_TV_KCN,			null,				null,						JKUStrConst.SCHEMA_KU0041,	INFO_TYPE_TV,			GROUP_TV	},
	{	JKUStrConst.CD00133_EOH_TV_SAISOSHIN,	null,				null,						JKUStrConst.SCHEMA_KU0031,	INFO_TYPE_TV,			GROUP_TV	}};
	
	/**
	 * 回線併合パターンチェック関連定数
	 */
	
	/** パターン：電話にネットを併合 */
	private static final String PATTERN_MT_NET_SK_TEL = "pattern_mt_net_sk_tel";
	/** パターン：ネットに電話を併合 */
	private static final String PATTERN_MT_TEL_SK_NET = "pattern_mt_tel_sk_net";
	/** パターン：テレビにネットを併合 */
	private static final String PATTERN_MT_NET_SK_TV = "pattern_mt_net_sk_tv";
	/** パターン：ネットにテレビを併合 */
	private static final String PATTERN_MT_TV_SK_NET = "pattern_mt_tv_sk_net";
	
	/** 配列番号:併合元サービス */
	private static final int ARRAY_NO_HEIGO_MT_SVC = 0;
	/** 配列番号:併合先サービス */
	private static final int ARRAY_NO_HEIGO_SC_SVC = 1;
	/** 配列番号:パターン */
	private static final int ARRAY_NO_PATTERN = 2;
	/**
	 * パターンチェック用配列（エラーにならないパターン）
	 */
	private static final String[][] PATTERN_ARRAY_2D =
	//	併合元					併合先					パターン
	{{	INFO_TYPE_HT_NET,		INFO_TYPE_HT_TEL,		PATTERN_MT_NET_SK_TEL	},
	{	INFO_TYPE_HT_NET,		INFO_TYPE_TV,			PATTERN_MT_NET_SK_TV	},
	{	INFO_TYPE_HT_NET_TEL,	INFO_TYPE_TV,			PATTERN_MT_NET_SK_TV	},
	{	INFO_TYPE_MT_NET,		INFO_TYPE_MT_TEL,		PATTERN_MT_NET_SK_TEL	},
	{	INFO_TYPE_MT_NET,		INFO_TYPE_TV,			PATTERN_MT_NET_SK_TV	},
	{	INFO_TYPE_MT_NET_TEL,	INFO_TYPE_TV,			PATTERN_MT_NET_SK_TV	},
	{	INFO_TYPE_HT_TEL,		INFO_TYPE_HT_NET,		PATTERN_MT_TEL_SK_NET	},
	{	INFO_TYPE_HT_TEL,		INFO_TYPE_TV,			PATTERN_MT_NET_SK_TV	},
	{	INFO_TYPE_MT_TEL,		INFO_TYPE_MT_NET,		PATTERN_MT_TEL_SK_NET	},
	{	INFO_TYPE_MT_TEL,		INFO_TYPE_TV,			PATTERN_MT_NET_SK_TV	},
	{	INFO_TYPE_TV,			INFO_TYPE_HT_NET,		PATTERN_MT_TV_SK_NET	},
	{	INFO_TYPE_TV,			INFO_TYPE_HT_NET_TEL,	PATTERN_MT_TV_SK_NET	},
	{	INFO_TYPE_TV,			INFO_TYPE_MT_NET,		PATTERN_MT_TV_SK_NET	},
	{	INFO_TYPE_TV,			INFO_TYPE_MT_NET_TEL,	PATTERN_MT_TV_SK_NET	},
	{	INFO_TYPE_TV,			INFO_TYPE_HT_TEL,		PATTERN_MT_TV_SK_NET	},
	{	INFO_TYPE_TV,			INFO_TYPE_MT_TEL,		PATTERN_MT_TV_SK_NET	}};
	
	/**
	 * エラーコード
	 */
	
	/** サービス契約_工事案件存在チェックエラー */
	private static final String SVC_KEI_NULL_ERR = "EA";
	/** 工事案件存在チェックエラー */
	private static final String KOJIAK_NULL_ERR = "EB";
	/** 仕掛中存在エラー */
	private static final String KOJIAK_SKKR_ERR = "EC";
	/** 併合対象工事案件存在チェックエラー */
	private static final String TAISHO_KOJIAK_NULL_ERR = "ED";
	/** サブスキーマ存在チェックエラー */
	private static final String SUBSCHEMA_NULL_ERR = "EE";
	/** 排他制御エラー */
	private static final String HAITA_ERR = "EF";
	/** 併合パターンエラー */
	private static final String HEIGO_PATTERN_ERR = "EG";
	
	/**
	 * 主処理
	 * @param inCBSMsg	CBSメッセージ
	 * @param inContext	ディスパッチコンテキスト
	 * @throws CAANException
	 */
	public void invoke(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANException
	{
		
		// ---サービス契約_工事案件情報の取得
		
		// -併合元サービス契約_工事案件情報の取得
		List<CAANMsg> heigoMtKu0081MsgList = getKu0081MsgList(inCBSMsg.getString(EKU0081C030CBSMsg.HEIGO_MT_SVC_KEI_KAISEN_UCWK_NO));
		
		// 取得できない場合はエラーを設定して終了する
		if (null == heigoMtKu0081MsgList)
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_MT_SVC_KEI_KAISEN_UCWK_NO_ERR, SVC_KEI_NULL_ERR);
			return;
		}
		
		// -併合先サービス契約_工事案件情報の取得
		List<CAANMsg> heigoSkKu0081MsgList = getKu0081MsgList(inCBSMsg.getString(EKU0081C030CBSMsg.HEIGO_SK_SVC_KEI_KAISEN_UCWK_NO));
		
		// 取得できない場合はエラーを設定して終了する
		if (null == heigoSkKu0081MsgList)
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_SK_SVC_KEI_KAISEN_UCWK_NO_ERR, SVC_KEI_NULL_ERR);
			return;
		}
		
		// ---工事案件情報の取得
		
		// -併合元工事案件情報の取得
		List<CAANMsg> heigoMtKu0011MsgList = getKu0011MsgList(heigoMtKu0081MsgList);
		
		// 取得できない場合はエラーを設定して終了する
		if (null == heigoMtKu0011MsgList)
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_MT_SVC_KEI_KAISEN_UCWK_NO_ERR, KOJIAK_NULL_ERR);
			return;
		}
		
		// -併合先工事案件情報の取得
		List<CAANMsg> heigoSkKu0011MsgList = getKu0011MsgList(heigoSkKu0081MsgList);
		
		// 取得できない場合はエラーを設定して終了する
		if (null == heigoSkKu0011MsgList)
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_SK_SVC_KEI_KAISEN_UCWK_NO_ERR, KOJIAK_NULL_ERR);
			return;
		}
		
		// ---工事案件整合性チェック
		
		// -併合元仕掛中工事チェック
		
		// 仕掛中工事案件が存在する場合はエラーを設定して終了する
		if (false == checkSkkrKojiak(heigoMtKu0011MsgList))
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_MT_SVC_KEI_KAISEN_UCWK_NO_ERR, KOJIAK_SKKR_ERR);
			return;
		}
		
		// -併合先仕掛中工事チェック
		
		// 仕掛中工事案件が存在する場合はエラーを設定して終了する
		if (false == checkSkkrKojiak(heigoSkKu0011MsgList))
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_SK_SVC_KEI_KAISEN_UCWK_NO_ERR, KOJIAK_SKKR_ERR);
			return;
		}
		
		String mansionBukkenCd = inCBSMsg.getString(EKU0081C030CBSMsg.MANSION_BUKKEN_CD);
		String mansTushinEquipCd = inCBSMsg.getString(EKU0081C030CBSMsg.MANS_TUSHIN_EQUIP_CD);
		
		// -併合対象工事案件（併合元）取得
		heigoMtKu0011MsgList = getTaishoKu0011MsgList(heigoMtKu0011MsgList);
		
		// 併合対象工事案件が取得できない場合はエラーを設定して終了する
		if (null == heigoMtKu0011MsgList)
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_MT_SVC_KEI_KAISEN_UCWK_NO_ERR, TAISHO_KOJIAK_NULL_ERR);
			return;
		}
		
		// -併合対象工事案件（併合先）取得
		heigoSkKu0011MsgList = getTaishoKu0011MsgList(heigoSkKu0011MsgList);
		
		// 併合対象工事案件が取得できない場合はエラーを設定して終了する
		if (null == heigoSkKu0011MsgList)
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_SK_SVC_KEI_KAISEN_UCWK_NO_ERR, TAISHO_KOJIAK_NULL_ERR);
			return;
		}
		
		// ---併合対象サービス契約_工事案件情報の取得
		
		List<CAANMsg> tempKu0081MsgList = null; new ArrayList<CAANMsg>();
		String tempKojiakNo = null;
		
		// -併合対象サービス契約_工事案件（併合元）
		tempKu0081MsgList = new ArrayList<CAANMsg>();
		
		// 全てのサービス契約_工事案件で実行する
		for (int i = 0; i < heigoMtKu0081MsgList.size(); ++i)
		{
			tempKojiakNo = heigoMtKu0081MsgList.get(i).getString(KU0081ETMsg.KOJIAK_NO);
			
			// 全ての併合対象工事案件で実行する
			for(int j = 0; j < heigoMtKu0011MsgList.size(); ++j)
			{
				// 併合対象工事案件と同じ工事案件番号を持つサービス契約_工事案件の場合
				if (tempKojiakNo.equals(heigoMtKu0011MsgList.get(j).getString(KU0011ETMsg.KOJIAK_NO)))
				{
					// サービス契約工事案件は、併合対象サービス契約工事案件であると判断する。
					tempKu0081MsgList.add(heigoMtKu0081MsgList.get(i));
					break;
				}
			}
		}
		heigoMtKu0081MsgList = tempKu0081MsgList;
		
		// -併合対象サービス契約_工事案件（併合先）
		tempKu0081MsgList = new ArrayList<CAANMsg>();
		
		// 全てのサービス契約_工事案件で実行する
		for (int i = 0; i < heigoSkKu0081MsgList.size(); ++i)
		{
			tempKojiakNo = heigoSkKu0081MsgList.get(i).getString(KU0081ETMsg.KOJIAK_NO);
			
			// 全ての併合対象工事案件で実行する
			for(int j = 0; j < heigoSkKu0011MsgList.size(); ++j)
			{
				// 併合対象工事案件と同じ工事案件番号を持つサービス契約_工事案件の場合
				if (tempKojiakNo.equals(heigoSkKu0011MsgList.get(j).getString(KU0011ETMsg.KOJIAK_NO)))
				{
					// サービス契約工事案件は、併合対象サービス契約工事案件であると判断する。
					tempKu0081MsgList.add(heigoSkKu0081MsgList.get(i));
					break;
				}
			}
		}
		heigoSkKu0081MsgList = tempKu0081MsgList;
		
		// ---併合対象サブスキーマの取得
		
		// -併合対象サブスキーマ（併合元）
		Map<String, CAANMsg> heigoMtSubMsgMap = getTaishoSubMsgMap(heigoMtKu0011MsgList, heigoMtKu0081MsgList,
				mansionBukkenCd, mansTushinEquipCd);
		
		// 取得できない場合はエラーを設定して終了する
		if (null == heigoMtSubMsgMap)
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_MT_SVC_KEI_KAISEN_UCWK_NO_ERR, SUBSCHEMA_NULL_ERR);
			return;
		}
		
		// -併合対象サブスキーマ（併合先）
		Map<String, CAANMsg> heigoSkSubMsgMap = getTaishoSubMsgMap(heigoSkKu0011MsgList, heigoSkKu0081MsgList,
				mansionBukkenCd, mansTushinEquipCd);
		
		// 取得できない場合はエラーを設定して終了する
		if (null == heigoSkSubMsgMap)
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_SK_SVC_KEI_KAISEN_UCWK_NO_ERR, SUBSCHEMA_NULL_ERR);
			return;
		}
		
		// ---排他制御の実行
		
		// -併合元工事案件の排他制御
		
		// 工事案件排他制御に失敗した場合はエラーを設定して終了する
		if (false == execExclusiveLock(heigoMtKu0011MsgList))
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_MT_SVC_KEI_KAISEN_UCWK_NO_ERR, HAITA_ERR);
			return;
		}
		
		// -併合先工事案件の排他制御
		
		// 工事案件排他制御に失敗した場合はエラーを設定して終了する
		if (false == execExclusiveLock(heigoSkKu0011MsgList))
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_SK_SVC_KEI_KAISEN_UCWK_NO_ERR, HAITA_ERR);
			return;
		}
		
		// ---併合パターンチェックの実行
		
		Map<String, Boolean> heigoPatternMap = checkPatternHeigo(heigoMtSubMsgMap, heigoSkSubMsgMap);
		
		// 併合パターンマップが取得できない場合はエラーを設定して終了する
		if (null == heigoPatternMap)
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_MT_SVC_KEI_KAISEN_UCWK_NO_ERR, HEIGO_PATTERN_ERR);
			return;
		}
		
		// ---機能コードチェックを実行
		
		// 機能コードが１以外の場合は、チェックのみの実行と判断し、以降の処理を行わず終了する
		if (false == JPCModelConstant.FUNC_CD_1.equals(inCBSMsg.getString(EKU0081C030CBSMsg.FUNC_CODE)))
		{
			return;
		}
		
		// ---回線併合処理を実行
		
		// 回線併合更新処理に失敗した場合はエラーを設定して終了する
		if (false == updKisenHeigo(heigoMtKu0081MsgList, heigoMtKu0011MsgList, heigoMtSubMsgMap,
				heigoSkKu0081MsgList, heigoSkKu0011MsgList, heigoSkSubMsgMap, heigoPatternMap, inCBSMsg))
		{
			setRelationError(inCBSMsg, EKU0081C030CBSMsg.HEIGO_MT_SVC_KEI_KAISEN_UCWK_NO_ERR, HEIGO_PATTERN_ERR);
			return;
		}
		
		// ---戻り値を設定して終了
		
		// 登録年月日時分秒
		inCBSMsg.set(EKU0081C030CBSMsg.ADD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 登録オペレータアカウント
		inCBSMsg.set(EKU0081C030CBSMsg.ADD_OPEACNT, EKU0081C030CBSMsg.OPERATORID);
		// 更新年月日時分秒
		inCBSMsg.set(EKU0081C030CBSMsg.UPD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 更新オペレータアカウント
		inCBSMsg.set(EKU0081C030CBSMsg.UPD_OPEACNT, EKU0081C030CBSMsg.OPERATORID);
		// 無効フラグ
		inCBSMsg.set(EKU0081C030CBSMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
	}
	
	/**
	 * サービス契約_工事案件取得処理
	 * @param svcKeiKaisenUcwkNo	サービス契約回線内訳番号
	 * @return	サービス契約_工事案件情報リスト
	 * @throws CAANException
	 */
	private List<CAANMsg> getKu0081MsgList(String svcKeiKaisenUcwkNo) throws CAANException
	{
		CAANMsg ku0081Msg = new CAANMsg(KU0081ETMsg.class.getName());
		
		// ---検索用メッセージの作成
		
		// サービス契約回線内訳番号
		ku0081Msg.set(KU0081ETMsg.SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
		// サービス契約_工事案件適用終了年月日
		ku0081Msg.set(KU0081ETMsg.SVKEI_KOJIAK_TENDYMD, JKUStrConst.MAX_YMD);
		// 無効フラグ
		ku0081Msg.set(KU0081ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
		
		// ---検索の実行
		
		CAANMsg[] ku0081MsgArray = new JKUejbKU0081SecProc().findByCondition(ku0081Msg);
		
		if (null == ku0081MsgArray || ku0081MsgArray.length == 0)
		{
			return null;
		}
		
		// ---結果のリスト化
		
		List<CAANMsg> retList = new ArrayList<CAANMsg>();
		for (int i = 0; i < ku0081MsgArray.length; ++i)
		{
			retList.add(ku0081MsgArray[i]);
		}
		
		return retList;
	}
	
	/**
	 * 工事案件取得処理
	 * @param ku0081MsgList	サービス契約_工事案件情報リスト
	 * @return	工事案件情報リスト
	 * @throws CAANException
	 */
	private List<CAANMsg> getKu0011MsgList(List<CAANMsg> ku0081MsgList) throws CAANException
	{
		// ---工事案件番号のリスト化
		
		List<String> kojiakNoList = new ArrayList<String>();
		String kojiakNo = null;
		
		for (int i = 0; i < ku0081MsgList.size(); ++i)
		{
			kojiakNo = ku0081MsgList.get(i).getString(KU0081ETMsg.KOJIAK_NO);
			if (-1 == kojiakNoList.indexOf(kojiakNo))
			{
				kojiakNoList.add(kojiakNo);
			}
		}
		
		// ---工事案件の取得
		
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		CAANMsg ku0011Msg = null;
		List<CAANMsg> retList = new ArrayList<CAANMsg>();
		
		for (int i = 0; i < kojiakNoList.size(); ++i)
		{
			ku0011Msg = new CAANMsg(KU0011ETMsg.class.getName());
			
			// 工事案件番号
			ku0011Msg.set(KU0011ETMsg.KOJIAK_NO, kojiakNoList.get(i));
			
			ku0011Msg = ku0011SecProc.findByPrimaryKey(ku0011Msg, true);
			
			if (null == ku0011Msg)
			{
				return null;
			}
			
			retList.add(ku0011Msg);
		}
		
		if (retList.size() == 0)
		{
			return null;
		}
		
		return retList;
	}
	
	/**
	 * 仕掛中チェック処理
	 * @param ku0011MsgList	工事案件情報リスト
	 * @return	チェック結果
	 */
	private boolean checkSkkrKojiak(List<CAANMsg> ku0011MsgList)
	{
		String kojiakStat = null;
		String mansKojiakStatCd = null;
		
		for (int i = 0; i < ku0011MsgList.size(); ++i)
		{
			kojiakStat = ku0011MsgList.get(i).getString(KU0011ETMsg.KOJIAK_STAT);
			mansKojiakStatCd = ku0011MsgList.get(i).getString(KU0011ETMsg.MANS_KOJIAK_STAT_CD);
			
			if (true == chkMatrix(SKKR_KOJIAK_STAT_ARRAY, JKUModelCommon.getYkKojiakStat(kojiakStat, mansKojiakStatCd)))
			{
				return false;
			}
		}
		return true;
	}
	
	/**
	 * 併合対象工事案件取得処理
	 * @param ku0011MsgList	工事案件情報リスト
	 * @return	併合対象工事案件情報リスト
	 */
	private List<CAANMsg> getTaishoKu0011MsgList(List<CAANMsg> ku0011MsgList)
	{
		List<CAANMsg> retList = new ArrayList<CAANMsg>();
		
		// ---最新基本工事を取得する
		
		for(int i = 0; i < ku0011MsgList.size(); ++i)
		{
			if (JKUStrConst.CD00882_RCNT_KIHON_KOJI.equals(ku0011MsgList.get(i).getString(KU0011ETMsg.RCNT_KIHON_KOJI_FLG)))
			{
				retList.add(ku0011MsgList.get(i));
			}
		}
		
		// 併合対象工事案件が存在しない場合
		if (retList.size() == 0)
		{
			return null;
		}
		
		return retList;
	}
	
	/**
	 * 併合対象サブスキーマ取得処理
	 * @param ku0011MsgList	工事案件情報リスト
	 * @param ku0081MsgList	サービス契約_工事案件情報リスト
	 * @param mansionBukkenCd	マンション物件コード
	 * @param mansTushinEquipCd	マンション通信設備コード
	 * @return	併合対象サブスキーマ情報マップ
	 * @throws CAANException
	 */
	private Map<String, CAANMsg> getTaishoSubMsgMap(List<CAANMsg> ku0011MsgList, List<CAANMsg> ku0081MsgList,
			String mansionBukkenCd, String mansTushinEquipCd) throws CAANException
	{
		Map<String, CAANMsg> retMap = new HashMap<String, CAANMsg>();
		CAANMsg ku0011Msg = null;
		CAANMsg ku0081Msg = null;
		String kojiakNo = null;
		
		String prcGrpCd = null;
		String svcCd = null;
		String mansBukkenCdUm = null;
		
		boolean svcCdNet = false;
		boolean svcCdTel = false;
		String[][] checkResult = null;
		
		String schemaName = null;
		String retKey = null;
		String checkGroup = null;
		boolean checkGroupNet = false;
		boolean checkGroupTv = false;
		
		CAANMsg kojiakSubMsg = null;
		
		
		// 工事案件の全てのレコードで実行する
		for (int i = 0; i < ku0011MsgList.size(); ++i)
		{
			// ---チェックに必要な項目を取得する
			
			ku0011Msg = ku0011MsgList.get(i);
			kojiakNo = ku0011Msg.getString(KU0011ETMsg.KOJIAK_NO);
			svcCdNet = false;
			svcCdTel = false;
			
			// 料金グループコード
			prcGrpCd = ku0011Msg.getString(KU0011ETMsg.PRC_GRP_CD);
			
			// マンション物件コード有無
			if (null == mansionBukkenCd)
			{
				mansBukkenCdUm = JKUStrConst.UM_NON;
			}
			else
			{
				mansBukkenCdUm = JKUStrConst.UM_YK;
			}
			
			// サービスコード
			for (int j = 0; j < ku0081MsgList.size(); ++j)
			{
				// サービス契約_工事案件
				ku0081Msg = ku0081MsgList.get(j);
				
				if (kojiakNo.equals(ku0081Msg.getString(KU0081ETMsg.KOJIAK_NO)))
				{
					if (JKUStrConst.CD00130_NET.equals(ku0081Msg.getString(KU0081ETMsg.SVC_CD)))
					{
						svcCdNet = true;
					}
					if (JKUStrConst.CD00130_TEL.equals(ku0081Msg.getString(KU0081ETMsg.SVC_CD)))
					{
						svcCdTel = true;
					}
				}
			}
			if (true == svcCdNet && true == svcCdTel)
			{
				svcCd = SVC_CD_NET_AND_TEL;
			}
			else if (true == svcCdNet)
			{
				svcCd = SVC_CD_NET;
			}
			else if (true == svcCdTel)
			{
				svcCd = SVC_CD_TEL;
			}
			else
			{
				svcCd = null;
			}
			
			// ---チェックの実行
			
			// 料金グループコード
			checkResult = selectArray(ARRAY_NO_PRC_GRP_CD, prcGrpCd, SUBSCHEMA_ARRAY_2D);
			// サービスコード
			checkResult = selectArray(ARRAY_NO_SVC_CD, svcCd, checkResult);
			// マンション物件コード有無
			checkResult = selectArray(ARRAY_NO_MANS_BK_CD, mansBukkenCdUm, checkResult);
			
			if (null == checkResult || checkResult.length != 1)
			{
				return null;
			}
			
			// ---チェック結果の取得
			
			// 取得スキーマ
			schemaName = checkResult[0][ARRAY_NO_SCHEMA];
			// 設定キー
			retKey = checkResult[0][ARRAY_NO_RET_KEY];
			// 整合性グループ
			checkGroup = checkResult[0][ARRAY_NO_GROUP];
			if (GROUP_NET.equals(checkGroup))
			{
				if (checkGroupNet)
				{
					return null;
				}
				checkGroupNet = true;
			}
			else if (GROUP_TV.equals(checkGroup))
			{
				if (checkGroupTv)
				{
					return null;
				}
				checkGroupTv = true;
			}
			
			// ---スキーマの取得
			
			kojiakSubMsg = null;
			
			if (JKUStrConst.SCHEMA_KU0021.equals(schemaName))
			{
				kojiakSubMsg = getKu0021Msg(kojiakNo);
			}
			else if (JKUStrConst.SCHEMA_KU0031.equals(schemaName))
			{
				kojiakSubMsg = getKu0031Msg(kojiakNo);
			}
			else if (JKUStrConst.SCHEMA_KU0041.equals(schemaName))
			{
				kojiakSubMsg = getKu0041Msg(kojiakNo);
			}
			else if (JKUStrConst.SCHEMA_KU0061.equals(schemaName))
			{
				kojiakSubMsg = getKu0061Msg(kojiakNo);
			}
			// ---戻り値の設定
			
			if (null == kojiakSubMsg)
			{
				return null;
			}
			
			retMap.put(retKey, kojiakSubMsg);
		}
		
		return retMap;
	}
	
	/**
	 * 工事案件排他制御処理
	 * @param ku0011MsgList	併合対象工事案件リスト
	 * @return	処理結果
	 */
	private boolean execExclusiveLock(List<CAANMsg> ku0011MsgList)
	{
		
		for (int i = 0; i < ku0011MsgList.size(); ++i)
		{
			if (false == JPCModelCommon.succeededExclusiveLock(ku0011MsgList.get(i), null, JKUStrConst.SCHEMA_KU0011))
			{
				return false;
			}
		}
		return true;
	}
	
	/**
	 * 回線併合パターンチェック処理
	 * @param heigoMtSubMsgMap	併合元サブスキーマ情報マップ
	 * @param heigoSkSubMsgMap	併合先サブスキーマ情報マップ
	 * @return	併合パターンチェック結果マップ
	 */
	private Map<String, Boolean> checkPatternHeigo(Map<String, CAANMsg> heigoMtSubMsgMap, Map<String, CAANMsg> heigoSkSubMsgMap)
	{
		String[][] checkResult = null;
		String pattern = null;
		
		boolean patternMtNetSkTel = false;
		boolean patternMtTelSkNet = false;
		boolean patternMtNetSkTv = false;
		boolean patternMtTvSkNet = false;
		
		Set<String> skKeySet = null;
		Iterator<String> skKeyIte = null;
		String skKey = null;
		
		// 併合元のソートしたキーを取得
		Set<String> mtKeySet = heigoMtSubMsgMap.keySet();
		// 併合元のキーからイテレータ作成
		Iterator<String> mtKeyIte = mtKeySet.iterator();
		
		String mtKey = null;
		
		// 併合元のレコード件数分繰り返し
		while(mtKeyIte.hasNext())
		{
			mtKey = mtKeyIte.next();
			
			// 併合先のソートしたキーを取得
			skKeySet = heigoSkSubMsgMap.keySet();
			// 併合先のキーからイテレータ作成
			skKeyIte = skKeySet.iterator();
			while(skKeyIte.hasNext())
			{
				skKey = skKeyIte.next();
				
				// 併合元チェック
				checkResult = selectArray(ARRAY_NO_HEIGO_MT_SVC, mtKey, PATTERN_ARRAY_2D);
				// 併合先チェック
				checkResult = selectArray(ARRAY_NO_HEIGO_SC_SVC, skKey, checkResult);
				
				if (null == checkResult || checkResult.length != 1)
				{
					return null;
				}
				
				pattern = checkResult[0][ARRAY_NO_PATTERN];
				
				if (PATTERN_MT_NET_SK_TEL.equals(pattern))
				{
					if (patternMtNetSkTel)
					{
						return null;
						
					}
					patternMtNetSkTel = true;
				}
				else if (PATTERN_MT_TEL_SK_NET.equals(pattern))
				{
					if (patternMtTelSkNet)
					{
						return null;
					}
					patternMtTelSkNet = true;
				}
				else if (PATTERN_MT_NET_SK_TV.equals(pattern))
				{
					if (patternMtNetSkTv)
					{
						return null;
					}
					patternMtNetSkTv = true;
					
				}
				else if (PATTERN_MT_TV_SK_NET.equals(pattern))
				{
					if (patternMtTvSkNet)
					{
						return null;
					}
					patternMtTvSkNet = true;
				}
			}
		}
		
		if (false == patternMtNetSkTel && false == patternMtTelSkNet)
		{
			if (false == patternMtNetSkTv && false == patternMtTvSkNet)
			{
				return null;
			}
		}
		
		if (true == patternMtNetSkTel || true == patternMtTelSkNet)
		{
			patternMtNetSkTv = false;
		}
		
		Map<String, Boolean> retMap = new HashMap<String, Boolean>();
		retMap.put(PATTERN_MT_NET_SK_TEL, patternMtNetSkTel);
		retMap.put(PATTERN_MT_TEL_SK_NET, patternMtTelSkNet);
		retMap.put(PATTERN_MT_NET_SK_TV, patternMtNetSkTv);
		retMap.put(PATTERN_MT_TV_SK_NET, patternMtTvSkNet);
		
		return retMap;
	}
	
	/**
	 * 回線併合更新処理
	 * @param heigoMtKu0081MsgList	併合元サービス契約_工事案件情報リスト
	 * @param heigoMtKu0011MsgList	併合元工事案件情報リスト
	 * @param heigoMtSubMsgMap		併合元工事案件サブスキーマ情報マップ
	 * @param heigoSkKu0081MsgList	併合先サービス契約_工事案件情報リスト
	 * @param heigoSkKu0011MsgList	併合先工事案件情報リスト
	 * @param heigoSkSubMsgMap		併合先工事案件サブスキーマ情報マップ
	 * @param heigoPatternMap		併合パターンマップ
	 * @param inCBSMsg				ＣＢＳメッセージ
	 * @return	実行結果
	 * @throws CAANException
	 */
	private boolean updKisenHeigo(List<CAANMsg> heigoMtKu0081MsgList, List<CAANMsg> heigoMtKu0011MsgList, Map<String, CAANMsg> heigoMtSubMsgMap,
			List<CAANMsg> heigoSkKu0081MsgList, List<CAANMsg> heigoSkKu0011MsgList, Map<String, CAANMsg> heigoSkSubMsgMap,
			Map<String, Boolean> heigoPatternMap, CAANMsg inCBSMsg) throws CAANException
	{
		
		String mtKojiakNo = null;
		String skKojiakNo = null;
		
		String mtSchemaName = null;
		
		CAANMsg heigoMtKu0011Msg = null;
		CAANMsg heigoSkKu0011Msg = null;
		
		CAANMsg heigoMtSubMsg = null;
		CAANMsg heigoSkSubMsg = null;
		
		CAANMsg heigoMtKu0081Msg = null;
		CAANMsg heigoSkKu0081Msg = null;
		
		boolean schemaUmFlg = false;
		
		
		// ---電話にネットを併合する
		
		if (true == heigoPatternMap.get(PATTERN_MT_NET_SK_TEL))
		{
			
			// -工事案件番号の取得
			
			if (heigoMtSubMsgMap.containsKey(INFO_TYPE_HT_NET))
			{
				mtSchemaName = INFO_TYPE_HT_NET;
				
				heigoMtSubMsg = heigoMtSubMsgMap.get(INFO_TYPE_HT_NET);
				mtKojiakNo = heigoMtSubMsg.getString(KU0021ETMsg.KOJIAK_NO);
				
				heigoSkSubMsg = heigoSkSubMsgMap.get(INFO_TYPE_HT_TEL);
				skKojiakNo = heigoSkSubMsg.getString(KU0021ETMsg.KOJIAK_NO);
				
				
			}
			else
			{
				mtSchemaName = INFO_TYPE_MT_NET;
				
				heigoMtSubMsg = heigoMtSubMsgMap.get(INFO_TYPE_MT_NET);
				mtKojiakNo = heigoMtSubMsg.getString(KU0061ETMsg.KOJIAK_NO);
				
				heigoSkSubMsg = heigoSkSubMsgMap.get(INFO_TYPE_MT_TEL);
				skKojiakNo = heigoSkSubMsg.getString(KU0061ETMsg.KOJIAK_NO);
			}
			
			// -工事案件の更新
			schemaUmFlg = false;
			for (int i = 0; i < heigoMtKu0011MsgList.size(); ++i)
			{
				heigoMtKu0011Msg = heigoMtKu0011MsgList.get(i);
				
				if (mtKojiakNo.equals(heigoMtKu0011Msg.getString(KU0011ETMsg.KOJIAK_NO)))
				{
					schemaUmFlg = true;
					break;
				}
			}
			
			if (false == schemaUmFlg)
			{
				return false;
			}
			
			schemaUmFlg = false;
			for (int i = 0; i < heigoSkKu0011MsgList.size(); ++i)
			{
				heigoSkKu0011Msg = heigoSkKu0011MsgList.get(i);
				
				if (skKojiakNo.equals(heigoSkKu0011Msg.getString(KU0011ETMsg.KOJIAK_NO)))
				{
					schemaUmFlg = true;
					break;
				}
			}
			
			if (false == schemaUmFlg)
			{
				return false;
			}
			
			addNetKu0011(heigoMtKu0011Msg, heigoSkKu0011Msg, inCBSMsg);
			
			// -工事案件サブスキーマの更新
			
			if (INFO_TYPE_HT_NET.equals(mtSchemaName))
			{
				addNetKu0021(heigoMtSubMsg, heigoSkSubMsg, inCBSMsg);
			}
			else
			{
				addNetKu0061(heigoMtSubMsg, heigoSkSubMsg, inCBSMsg);
			}
			
			// -サービス契約_工事案件、申込明細_工事案件の登録
			
			schemaUmFlg = false;
			for (int i = 0; i < heigoMtKu0081MsgList.size(); ++i)
			{
				heigoMtKu0081Msg = heigoMtKu0081MsgList.get(i);
				if (mtKojiakNo.equals(heigoMtKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO)))
				{
					schemaUmFlg = true;
					break;
				}
			}
			
			if (false == schemaUmFlg)
			{
				return false;
			}
			
			schemaUmFlg = false;
			for (int i = 0; i < heigoSkKu0081MsgList.size(); ++i)
			{
				heigoSkKu0081Msg = heigoSkKu0081MsgList.get(i);
				if (skKojiakNo.equals(heigoSkKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO)))
				{
					schemaUmFlg = true;
					break;
				}
			}
			
			if (false == schemaUmFlg)
			{
				return false;
			}
			
			insSvckeiAndMskm(heigoMtKu0081Msg, heigoSkKu0081Msg, inCBSMsg);
		}
		
		// ---ネットに電話を併合する
		
		if (true == heigoPatternMap.get(PATTERN_MT_TEL_SK_NET))
		{
			// -工事案件番号の取得
			
			if (heigoMtSubMsgMap.containsKey(INFO_TYPE_HT_TEL))
			{
				mtSchemaName = INFO_TYPE_HT_TEL;
				
				heigoMtSubMsg = heigoMtSubMsgMap.get(INFO_TYPE_HT_TEL);
				mtKojiakNo = heigoMtSubMsg.getString(KU0021ETMsg.KOJIAK_NO);
				
				heigoSkSubMsg = heigoSkSubMsgMap.get(INFO_TYPE_HT_NET);
				skKojiakNo = heigoSkSubMsg.getString(KU0021ETMsg.KOJIAK_NO);
			}
			else
			{
				mtSchemaName = INFO_TYPE_MT_TEL;
				
				heigoMtSubMsg = heigoMtSubMsgMap.get(INFO_TYPE_MT_TEL);
				mtKojiakNo = heigoMtSubMsg.getString(KU0061ETMsg.KOJIAK_NO);
				
				heigoSkSubMsg = heigoSkSubMsgMap.get(INFO_TYPE_MT_NET);
				skKojiakNo = heigoSkSubMsg.getString(KU0061ETMsg.KOJIAK_NO);
			}
			
			// -工事案件の更新
			
			schemaUmFlg = false;
			for (int i = 0; i < heigoMtKu0011MsgList.size(); ++i)
			{
				heigoMtKu0011Msg = heigoMtKu0011MsgList.get(i);
				
				if (mtKojiakNo.equals(heigoMtKu0011Msg.getString(KU0011ETMsg.KOJIAK_NO)))
				{
					schemaUmFlg = true;
					break;
				}
			}
			
			if (false == schemaUmFlg)
			{
				return false;
			}
			
			schemaUmFlg = false;
			for (int i = 0; i < heigoSkKu0011MsgList.size(); ++i)
			{
				heigoSkKu0011Msg = heigoSkKu0011MsgList.get(i);
				
				if (skKojiakNo.equals(heigoSkKu0011Msg.getString(KU0011ETMsg.KOJIAK_NO)))
				{
					schemaUmFlg = true;
					break;
				}
			}
			
			if (false == schemaUmFlg)
			{
				return false;
			}
			
			addTelKu0011(heigoMtKu0011Msg, heigoSkKu0011Msg, inCBSMsg);
			
			// -工事案件サブスキーマの更新
			
			if (INFO_TYPE_HT_TEL.equals(mtSchemaName))
			{
				addTelKu0021(heigoMtSubMsg, heigoSkSubMsg, inCBSMsg);
			}
			else
			{
				addTelKu0061(heigoMtSubMsg, heigoSkSubMsg, inCBSMsg);
			}
			
			// -サービス契約_工事案件、申込明細_工事案件の登録
			
			schemaUmFlg = false;
			for (int i = 0; i < heigoMtKu0081MsgList.size(); ++i)
			{
				heigoMtKu0081Msg = heigoMtKu0081MsgList.get(i);
				if (mtKojiakNo.equals(heigoMtKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO)))
				{
					schemaUmFlg = true;
					break;
				}
			}
			
			if (false == schemaUmFlg)
			{
				return false;
			}
			
			schemaUmFlg = false;
			for (int i = 0; i < heigoSkKu0081MsgList.size(); ++i)
			{
				heigoSkKu0081Msg = heigoSkKu0081MsgList.get(i);
				if (skKojiakNo.equals(heigoSkKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO)))
				{
					schemaUmFlg = true;
					break;
				}
			}
			
			if (false == schemaUmFlg)
			{
				return false;
			}
			
			insSvckeiAndMskm(heigoMtKu0081Msg, heigoSkKu0081Msg, inCBSMsg);
		}
		
		// ---テレビにネットを併合する
		
		if (true == heigoPatternMap.get(PATTERN_MT_NET_SK_TV))
		{
			
			// -工事案件番号の取得
			
			if (heigoMtSubMsgMap.containsKey(INFO_TYPE_HT_NET))
			{
				mtSchemaName = INFO_TYPE_HT_NET;
				heigoMtSubMsg = heigoMtSubMsgMap.get(INFO_TYPE_HT_NET);
				mtKojiakNo = heigoMtSubMsg.getString(KU0021ETMsg.KOJIAK_NO);
			}
			else if (heigoMtSubMsgMap.containsKey(INFO_TYPE_MT_NET))
			{
				mtSchemaName = INFO_TYPE_MT_NET;
				heigoMtSubMsg = heigoMtSubMsgMap.get(INFO_TYPE_MT_NET);
				mtKojiakNo = heigoMtSubMsg.getString(KU0061ETMsg.KOJIAK_NO);
			}
			else if (heigoMtSubMsgMap.containsKey(INFO_TYPE_HT_TEL))
			{
				mtSchemaName = INFO_TYPE_HT_TEL;
				heigoMtSubMsg = heigoMtSubMsgMap.get(INFO_TYPE_HT_TEL);
				mtKojiakNo = heigoMtSubMsg.getString(KU0021ETMsg.KOJIAK_NO);
			}
			else if (heigoMtSubMsgMap.containsKey(INFO_TYPE_MT_TEL))
			{
				mtSchemaName = INFO_TYPE_MT_TEL;
				heigoMtSubMsg = heigoMtSubMsgMap.get(INFO_TYPE_MT_TEL);
				mtKojiakNo = heigoMtSubMsg.getString(KU0061ETMsg.KOJIAK_NO);
			}
			else if (heigoMtSubMsgMap.containsKey(INFO_TYPE_HT_NET_TEL))
			{
				mtSchemaName = INFO_TYPE_HT_NET_TEL;
				heigoMtSubMsg = heigoMtSubMsgMap.get(INFO_TYPE_HT_NET_TEL);
				mtKojiakNo = heigoMtSubMsg.getString(KU0021ETMsg.KOJIAK_NO);
			}
			else if (heigoMtSubMsgMap.containsKey(INFO_TYPE_MT_NET_TEL))
			{
				mtSchemaName = INFO_TYPE_MT_NET_TEL;
				heigoMtSubMsg = heigoMtSubMsgMap.get(INFO_TYPE_MT_NET_TEL);
				mtKojiakNo = heigoMtSubMsg.getString(KU0021ETMsg.KOJIAK_NO);
			}
			
			skKojiakNo = heigoSkSubMsgMap.get(INFO_TYPE_TV).getString(KU0031ETMsg.KOJIAK_NO);
			heigoSkKu0081Msg = heigoSkKu0081MsgList.get(0);
			
			// -サービス契約_工事案件の更新
			
			schemaUmFlg = false;
			for (int i = 0; i < heigoMtKu0081MsgList.size(); ++i)
			{
				heigoMtKu0081Msg = heigoMtKu0081MsgList.get(i);
				if (mtKojiakNo.equals(heigoMtKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO)))
				{
					schemaUmFlg = true;
					updKu0081(heigoMtKu0081Msg, heigoSkKu0081Msg, inCBSMsg);
				}
			}
			
			if (false == schemaUmFlg)
			{
				return false;
			}
		}
		
		// ---ネットにテレビを併合する
		
		if (true == heigoPatternMap.get(PATTERN_MT_TV_SK_NET))
		{
			// -工事案件番号の取得
			heigoMtSubMsg = heigoMtSubMsgMap.get(INFO_TYPE_TV);
			mtKojiakNo = heigoMtSubMsg.getString(KU0061ETMsg.KOJIAK_NO);
			
			// -サービス契約_工事案件の更新
			
			schemaUmFlg = false;
			for (int i = 0; i < heigoMtKu0081MsgList.size(); ++i)
			{
				heigoMtKu0081Msg = heigoMtKu0081MsgList.get(i);
				if (mtKojiakNo.equals(heigoMtKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO)))
				{
					schemaUmFlg = true;
					break;
				}
			}
			
			if (false == schemaUmFlg)
			{
				return false;
			}
			
			heigoSkKu0081Msg = heigoSkKu0081MsgList.get(0);
			
			updKu0081(heigoMtKu0081Msg, heigoSkKu0081Msg, inCBSMsg);
			
		}
		return true;
	}
	
	/**
	 * サービス契約_工事案件、申込明細_工事案件登録処理
	 * @param heigoMtKu0081Msg	併合元サービス契約_工事案件
	 * @param heigoSkKu0081Msg	併合先サービス契約_工事案件
	 * @param inCBSMsg			ＣＢＳメッセージ
	 * @return	実行結果
	 * @throws CAANException
	 */
	private boolean insSvckeiAndMskm(CAANMsg heigoMtKu0081Msg, CAANMsg heigoSkKu0081Msg, CAANMsg inCBSMsg) throws CAANException
	{
		JKUejbKU0081SecProc ku0081SecProc = new JKUejbKU0081SecProc();
		CAANMsg ku0081Msg = new CAANMsg(KU0081ETMsg.class.getName());
		
		// サービス契約番号(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVC_KEI_NO, heigoMtKu0081Msg.getString(KU0081ETMsg.SVC_KEI_NO));
		
		// 工事案件番号(併合先サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.KOJIAK_NO, heigoSkKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO));
		
		//PK検索で結果が取得できた場合
		if(ku0081SecProc.isExistsPrimaryKey(ku0081Msg, false))
		{
			// ---サービス契約_工事案件の更新
			updKu0081SameSvcKeiNo(heigoMtKu0081Msg, heigoSkKu0081Msg, inCBSMsg);
		}
		else
		{
			// ---サービス契約_工事案件の登録
			insKu0081(heigoMtKu0081Msg, heigoSkKu0081Msg, inCBSMsg);
		}
		
		// ---サービス契約_工事案件の更新
		
		updKu0081TEndYmd(heigoMtKu0081Msg, inCBSMsg);
		
		// ---申込明細_工事案件の取得
		
		String heigoSkKojiakNo = heigoSkKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO);
		insKu0091(heigoMtKu0081Msg, heigoSkKojiakNo, inCBSMsg);
		
		return true;
	}
	
	/**
	 * 電話にネットを併合する_工事案件更新
	 * @param heigoMtKu0011Msg	併合元工事案件情報
	 * @param heigoSkKu0011Msg	併合先工事案件情報
	 * @param inCBSMsg	ＣＢＳメッセージ
	 * @return	実行結果
	 * @throws CAANException
	 */
	private boolean addNetKu0011(CAANMsg heigoMtKu0011Msg, CAANMsg heigoSkKu0011Msg, CAANMsg inCBSMsg) throws CAANException
	{
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		CAANMsg ku0011Msg = new CAANMsg(KU0011ETMsg.class.getName());
		
		// 工事案件番号(併合先工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.KOJIAK_NO, heigoSkKu0011Msg.getString(KU0011ETMsg.KOJIAK_NO));
		
		// SYSID(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.SYSID, heigoMtKu0011Msg.getString(KU0011ETMsg.SYSID));
		// 連携サービス契約番号(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.RNKI_SVC_KEI_NO, heigoMtKu0011Msg.getString(KU0011ETMsg.RNKI_SVC_KEI_NO));
		// 請求契約番号(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.SEIKY_KEI_NO, heigoMtKu0011Msg.getString(KU0011ETMsg.SEIKY_KEI_NO));
		// 料金グループコード(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.PRC_GRP_CD, heigoMtKu0011Msg.getString(KU0011ETMsg.PRC_GRP_CD));
		// 料金コースコード(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.PCRS_CD, heigoMtKu0011Msg.getString(KU0011ETMsg.PCRS_CD));
		// 料金プランコード(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.PPLAN_CD, heigoMtKu0011Msg.getString(KU0011ETMsg.PPLAN_CD));
		// 割引タイプコード(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.WRIB_TYPE_CD, heigoMtKu0011Msg.getString(KU0011ETMsg.WRIB_TYPE_CD));
		
		// ---FCDS変更連携要否更新有無
		
		List<String[]> fcdsCheckList = new ArrayList<String[]>();
		// お客様名
		fcdsCheckList.add(new String[] {KU0011ETMsg.CUST_NM, KU0011ETMsg.CUST_NM, null});
		
		boolean fcdsCheckResult = JKUModelCommon.checkRnkiSysFlgUpd(heigoSkKu0011Msg, heigoMtKu0011Msg, fcdsCheckList);
		
		// ---Genesis変更連携要否更新有無
		
		List<String[]> genesisCheckList = new ArrayList<String[]>();
		// SYSID【比較対象】
		genesisCheckList.add(new String[] {KU0011ETMsg.SYSID, KU0011ETMsg.SYSID, null});
		// お客様名【比較対象】
		genesisCheckList.add(new String[] {KU0011ETMsg.CUST_NM, KU0011ETMsg.CUST_NM, null});
		// お客様カナ名【比較対象】
		genesisCheckList.add(new String[] {KU0011ETMsg.CUST_KANA, KU0011ETMsg.CUST_KANA, null});
		// お客様自宅電話番号【比較対象】
		genesisCheckList.add(new String[] {KU0011ETMsg.CUST_HOME_TELNO, KU0011ETMsg.CUST_HOME_TELNO, null});
		// お客様携帯電話番号【比較対象】
		genesisCheckList.add(new String[] {KU0011ETMsg.CUST_KTAI_TELNO, KU0011ETMsg.CUST_KTAI_TELNO, null});
		// お客様連絡先電話番号【比較対象】
		genesisCheckList.add(new String[] {KU0011ETMsg.CUST_RRKS_TELNO, KU0011ETMsg.CUST_RRKS_TELNO, null});
		
		boolean genesisCheckResult = JKUModelCommon.checkRnkiSysFlgUpd(heigoSkKu0011Msg, heigoMtKu0011Msg, genesisCheckList);
		
		String mansTushinEquipCd = inCBSMsg.getString(EKU0081C030CBSMsg.MANS_TUSHIN_EQUIP_CD);
		
		// OPMS変更連携要否 （'要'）
		ku0011Msg.set(KU0011ETMsg.OPMS_CHGE_RNKI_YH, JKUStrConst.KH_PSG);
		
		// マンション物件コードがnullの場合のみ値を変更する
		if (null == inCBSMsg.getString(EKU0081C030CBSMsg.MANSION_BUKKEN_CD))
		{
			// FCDS変更連携要否('要'　FCDS項目に変更があった場合)
			if (true == fcdsCheckResult)
			{
				ku0011Msg.set(KU0011ETMsg.FCDS_CHGE_RNKI_YH, JKUModelCommon.getChgRnkiYh(heigoSkKu0011Msg, JKUStrConst.RNKI_SYSTEM_FCDS));
			}
			// Genesis変更連携要否('要'　Genesis項目に変更があった場合)
			if (true == genesisCheckResult)
			{
				ku0011Msg.set(KU0011ETMsg.GENESIS_CHGE_RNKI_YH, JKUModelCommon.getChgRnkiYh(heigoSkKu0011Msg, JKUStrConst.RNKI_SYSTEM_GENESIS));
			}
		}
		// その他の場合、マンション通信設備コードがＶＤＳＬ、イーサネット以外の場合のみ値を変更する
		else if (false == JKUStrConst.MANS_TUSHIN_EQ_CD_ETHA.equals(mansTushinEquipCd)
				&& false == JKUStrConst.MANS_TUSHIN_EQ_CD_VDSL.equals(mansTushinEquipCd))
		{
			// FCDS変更連携要否('要'　FCDS項目に変更があった場合)
			if (true == fcdsCheckResult)
			{
				ku0011Msg.set(KU0011ETMsg.FCDS_CHGE_RNKI_YH, JKUModelCommon.getChgRnkiYh(heigoSkKu0011Msg, JKUStrConst.RNKI_SYSTEM_FCDS));
			}
		}
		
		// 申込受付年月日(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.MSKM_UK_YMD, heigoMtKu0011Msg.getString(KU0011ETMsg.MSKM_UK_YMD));
		// 申込書到着年月日(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.MSKMSHO_ARIV_YMD, heigoMtKu0011Msg.getString(KU0011ETMsg.MSKMSHO_ARIV_YMD));
		// お客様名(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.CUST_NM, heigoMtKu0011Msg.getString(KU0011ETMsg.CUST_NM));
		// お客様カナ名(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.CUST_KANA, heigoMtKu0011Msg.getString(KU0011ETMsg.CUST_KANA));
		// お客様自宅電話番号(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.CUST_HOME_TELNO, heigoMtKu0011Msg.getString(KU0011ETMsg.CUST_HOME_TELNO));
		// お客様携帯電話番号(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.CUST_KTAI_TELNO, heigoMtKu0011Msg.getString(KU0011ETMsg.CUST_KTAI_TELNO));
		// お客様連絡先電話番号(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.CUST_RRKS_TELNO, heigoMtKu0011Msg.getString(KU0011ETMsg.CUST_RRKS_TELNO));
		// 連絡先勤務先名(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.RRKS_OFFC_NM, heigoMtKu0011Msg.getString(KU0011ETMsg.RRKS_OFFC_NM));
		// 契約者住所コード(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.KEISHA_AD_CD, heigoMtKu0011Msg.getString(KU0011ETMsg.KEISHA_AD_CD));
		// 契約者郵便番号(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.KEISHA_PCD, heigoMtKu0011Msg.getString(KU0011ETMsg.KEISHA_PCD));
		// 契約者都道府県名(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.KEISHA_STATE_NM, heigoMtKu0011Msg.getString(KU0011ETMsg.KEISHA_STATE_NM));
		// 契約者市区町村名(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.KEISHA_CITY_NM, heigoMtKu0011Msg.getString(KU0011ETMsg.KEISHA_CITY_NM));
		// 契約者大字通称名(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.KEISHA_OAZTSU_NM, heigoMtKu0011Msg.getString(KU0011ETMsg.KEISHA_OAZTSU_NM));
		// 契約者字丁目名(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.KEISHA_AZCHO_NM, heigoMtKu0011Msg.getString(KU0011ETMsg.KEISHA_AZCHO_NM));
		// 契約者住所番地号(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.KEISHA_AD_BNCHIGO, heigoMtKu0011Msg.getString(KU0011ETMsg.KEISHA_AD_BNCHIGO));
		// 契約者住所補記・建物名(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.KEISHA_ADRTTM, heigoMtKu0011Msg.getString(KU0011ETMsg.KEISHA_ADRTTM));
		// 契約者住所補記・部屋番号(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.KEISHA_ADRRM, heigoMtKu0011Msg.getString(KU0011ETMsg.KEISHA_ADRRM));
		// 契約者住所手動入力フラグ(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.KEISHA_AD_MAN_INPUT_FLG, heigoMtKu0011Msg.getString(KU0011ETMsg.KEISHA_AD_MAN_INPUT_FLG));
		// 同時番ポ希望有無(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.DOJI_BMP_KIBO_UM, heigoMtKu0011Msg.getString(KU0011ETMsg.DOJI_BMP_KIBO_UM));
		// オプションサービス契約引継ぎフラグ(併合元工事案件情報の同一項目)
		ku0011Msg.set(KU0011ETMsg.OPSVKEI_HKTGI_FLG, heigoMtKu0011Msg.getString(KU0011ETMsg.OPSVKEI_HKTGI_FLG));
		
		// 更新年月日時分秒(システム日付)
		ku0011Msg.set(KU0011ETMsg.UPD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 更新オペレータアカウント(共通部：オペレータＩＤ)
		ku0011Msg.set(KU0011ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));

		// 更新実行
		ku0011SecProc.update(ku0011Msg);
		
		return true;
	}
	
	/**
	 * ネットに電話を併合する_工事案件更新
	 * @param heigoMtKu0011Msg	併合元工事案件＜eo光ネット＞情報
	 * @param heigoSkKu0011Msg	併合先工事案件＜eo光ネット＞情報
	 * @param inCBSMsg	ＣＢＳメッセージ
	 * @return	実行結果
	 * @throws CAANException
	 */
	private boolean addTelKu0011(CAANMsg heigoMtKu0011Msg, CAANMsg heigoSkKu0011Msg, CAANMsg inCBSMsg) throws CAANException
	{
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		CAANMsg ku0011Msg = new CAANMsg(KU0011ETMsg.class.getName());
		
		// 工事案件番号(併合先工事案件の同一項目)
		ku0011Msg.set(KU0011ETMsg.KOJIAK_NO, heigoSkKu0011Msg.getString(KU0011ETMsg.KOJIAK_NO));
		
		// OPMS変更連携要否
		ku0011Msg.set(KU0011ETMsg.OPMS_CHGE_RNKI_YH, JKUStrConst.KH_PSG);
		// 同時番ポ希望有無(併合元工事案件の同一項目)
		ku0011Msg.set(KU0011ETMsg.DOJI_BMP_KIBO_UM, heigoMtKu0011Msg.getString(KU0011ETMsg.DOJI_BMP_KIBO_UM));
		
		// 更新年月日時分秒(システム日付)
		ku0011Msg.set(KU0011ETMsg.UPD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 更新オペレータアカウント(共通部：オペレータＩＤ)
		ku0011Msg.set(KU0011ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));
		
		// 更新実行
		ku0011SecProc.update(ku0011Msg);
		
		return true;
	}
	
	/**
	 * 電話にネットを併合する_工事案件＜eo光ネット＞更新
	 * @param heigoMtKu0021Msg	併合元工事案件＜eo光ネット＞情報
	 * @param heigoSkKu0021Msg	併合先工事案件＜eo光ネット＞情報
	 * @param inCBSMsg	ＣＢＳメッセージ
	 * @return	実行ｋっケア
	 * @throws CAANException
	 */
	private boolean addNetKu0021(CAANMsg heigoMtKu0021Msg, CAANMsg heigoSkKu0021Msg, CAANMsg inCBSMsg) throws CAANException
	{
		JKUejbKU0021SecProc ku0021SecProc = new JKUejbKU0021SecProc();
		CAANMsg ku0021Msg = new CAANMsg(KU0021ETMsg.class.getName());
		
		// 工事案件番号(併合先工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.KOJIAK_NO, heigoSkKu0021Msg.getString(KU0021ETMsg.KOJIAK_NO));
		
		// ファミリーパック契約有無(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.FAMIPA_KEI_UM, heigoMtKu0021Msg.getString(KU0021ETMsg.FAMIPA_KEI_UM));
		// PLCモデムレンタル台数(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.PLC_MODEM_RENT_CNT, heigoMtKu0021Msg.getString(KU0021ETMsg.PLC_MODEM_RENT_CNT));
		// PLCモデム買取台数(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.PLC_MODEM_KAITORI_CNT, heigoMtKu0021Msg.getString(KU0021ETMsg.PLC_MODEM_KAITORI_CNT));
		// 追加元サービス契約番号(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.ADD_MOTO_SVC_KEI_NO, heigoMtKu0021Msg.getString(KU0021ETMsg.ADD_MOTO_SVC_KEI_NO));
		// 電波障害案件種別コード(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.DMPSANK_SBT_CD, heigoMtKu0021Msg.getString(KU0021ETMsg.DMPSANK_SBT_CD));
		
		// 更新年月日時分秒(システム日時)
		ku0021Msg.set(KU0021ETMsg.UPD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 更新オペレータアカウント(オペレータアカウント)
		ku0021Msg.set(KU0021ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));
		
		// 更新実行
		ku0021SecProc.update(ku0021Msg);

		return true;
	}
	
	/**
	 * 電話にネットを併合する_工事案件＜eo光マンション＞更新
	 * @param heigoMtKu0061Msg	併合元工事案件＜eo光ネットマンション＞情報
	 * @param heigoSkKu0061Msg	併合先工事案件＜eo光ネットマンション＞情報
	 * @param inCBSMsg	ＣＢＳメッセージ
	 * @return	実行結果
	 * @throws CAANException
	 */
	private boolean addNetKu0061(CAANMsg heigoMtKu0061Msg, CAANMsg heigoSkKu0061Msg, CAANMsg inCBSMsg) throws CAANException
	{
		JKUejbKU0061SecProc ku0061SecProc = new JKUejbKU0061SecProc();
		CAANMsg ku0061Msg = new CAANMsg(KU0061ETMsg.class.getName());
		
		// 工事案件番号(併合先工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.KOJIAK_NO, heigoSkKu0061Msg.getString(KU0061ETMsg.KOJIAK_NO));
		
		// ファミリーパック契約有無(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.FAMIPA_KEI_UM, heigoMtKu0061Msg.getString(KU0061ETMsg.FAMIPA_KEI_UM));
		// PLCモデムレンタル台数(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.PLC_MODEM_RENT_CNT, heigoMtKu0061Msg.getString(KU0061ETMsg.PLC_MODEM_RENT_CNT));
		// PLCモデム買取台数(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.PLC_MODEM_KAITORI_CNT, heigoMtKu0061Msg.getString(KU0061ETMsg.PLC_MODEM_KAITORI_CNT));
		// 追加元サービス契約番号(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.ADD_MOTO_SVC_KEI_NO, heigoMtKu0061Msg.getString(KU0061ETMsg.ADD_MOTO_SVC_KEI_NO));
		// 電波障害案件種別コード(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.DMPSANK_SBT_CD, heigoMtKu0061Msg.getString(KU0061ETMsg.DMPSANK_SBT_CD));
		// 更新年月日時分秒(システム日付)
		ku0061Msg.set(KU0061ETMsg.UPD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 更新オペレータアカウント(共通部：オペレータＩＤ)
		ku0061Msg.set(KU0061ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));
		// スマートリンクオプション契約有無(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.SMLN_OP_KEI_UM, heigoMtKu0061Msg.getString(KU0061ETMsg.SMLN_OP_KEI_UM));

		// 更新実行
		ku0061SecProc.update(ku0061Msg);
		
		return true;
	}
	
	/**
	 * ネットに電話を併合する_工事案件＜eo光ネット＞更新
	 * @param heigoMtKu0021Msg	併合元工事案件＜eo光ネット＞情報
	 * @param heigoSkKu0021Msg	併合先工事案件＜eo光ネット＞情報
	 * @param inCBSMsg	ＣＢＳメッセージ
	 * @return	更新結果
	 * @throws CAANException
	 */
	private boolean addTelKu0021(CAANMsg heigoMtKu0021Msg, CAANMsg heigoSkKu0021Msg, CAANMsg inCBSMsg) throws CAANException
	{
		
		JKUejbKU0021SecProc ku0021SecProc = new JKUejbKU0021SecProc();
		CAANMsg ku0021Msg = new CAANMsg(KU0021ETMsg.class.getName());
		
		// 工事案件番号(併合先工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.KOJIAK_NO, heigoSkKu0021Msg.getString(KU0021ETMsg.KOJIAK_NO));
		
		// eo光電話宅内工事有無(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.EOH_TEL_TAKNIKJ_UM, heigoMtKu0021Msg.getString(KU0021ETMsg.EOH_TEL_TAKNIKJ_UM));
		// eo光電話番号1(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.EOH_TELNO_1, heigoMtKu0021Msg.getString(KU0021ETMsg.EOH_TELNO_1));
		// 番ポ有無1(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_UM_1, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_UM_1));
		// 番ポ予定年月日1(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_RSV_YMD_1, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_RSV_YMD_1));
		// 番ポ元通信事業者コード1(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_MOTO_TUSHIN_JGS_CD_1, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_MOTO_TUSHIN_JGS_CD_1));
		// 同番移転有無1(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.DOBANITEN_UM_1, heigoMtKu0021Msg.getString(KU0021ETMsg.DOBANITEN_UM_1));
		// 番ポ工事要否1(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_KOJI_YH_1, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_KOJI_YH_1));
		// eo光電話番号2(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.EOH_TELNO_2, heigoMtKu0021Msg.getString(KU0021ETMsg.EOH_TELNO_2));
		// 番ポ有無2(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_UM_2, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_UM_2));
		// 番ポ予定年月日2(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_RSV_YMD_2, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_RSV_YMD_2));
		// 番ポ元通信事業者コード2(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_MOTO_TUSHIN_JGS_CD_2, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_MOTO_TUSHIN_JGS_CD_2));
		// 同番移転有無2(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.DOBANITEN_UM_2, heigoMtKu0021Msg.getString(KU0021ETMsg.DOBANITEN_UM_2));
		// 番ポ工事要否2(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_KOJI_YH_2, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_KOJI_YH_2));
		// eo光電話番号3(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.EOH_TELNO_3, heigoMtKu0021Msg.getString(KU0021ETMsg.EOH_TELNO_3));
		// 番ポ有無3(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_UM_3, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_UM_3));
		// 番ポ予定年月日3(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_RSV_YMD_3, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_RSV_YMD_3));
		// 番ポ元通信事業者コード3(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_MOTO_TUSHIN_JGS_CD_3, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_MOTO_TUSHIN_JGS_CD_3));
		// 同番移転有無3(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.DOBANITEN_UM_3, heigoMtKu0021Msg.getString(KU0021ETMsg.DOBANITEN_UM_3));
		// 番ポ工事要否3(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_KOJI_YH_3, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_KOJI_YH_3));
		// eo光電話番号4(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.EOH_TELNO_4, heigoMtKu0021Msg.getString(KU0021ETMsg.EOH_TELNO_4));
		// 番ポ有無4(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_UM_4, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_UM_4));
		// 番ポ予定年月日4(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_RSV_YMD_4, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_RSV_YMD_4));
		// 番ポ元通信事業者コード4(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_MOTO_TUSHIN_JGS_CD_4, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_MOTO_TUSHIN_JGS_CD_4));
		// 同番移転有無4(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.DOBANITEN_UM_4, heigoMtKu0021Msg.getString(KU0021ETMsg.DOBANITEN_UM_4));
		// 番ポ工事要否4(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_KOJI_YH_4, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_KOJI_YH_4));
		// eo光電話番号5(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.EOH_TELNO_5, heigoMtKu0021Msg.getString(KU0021ETMsg.EOH_TELNO_5));
		// 番ポ有無5(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_UM_5, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_UM_5));
		// 番ポ予定年月日5(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_RSV_YMD_5, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_RSV_YMD_5));
		// 番ポ元通信事業者コード5(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_MOTO_TUSHIN_JGS_CD_5, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_MOTO_TUSHIN_JGS_CD_5));
		// 同番移転有無5(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.DOBANITEN_UM_5, heigoMtKu0021Msg.getString(KU0021ETMsg.DOBANITEN_UM_5));
		// 番ポ工事要否5(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.BMP_KOJI_YH_5, heigoMtKu0021Msg.getString(KU0021ETMsg.BMP_KOJI_YH_5));
		// eo光電話台数(併合元工事案件＜eo光ネット＞の同一項目)
		ku0021Msg.set(KU0021ETMsg.EOH_TEL_CNT, heigoMtKu0021Msg.getString(KU0021ETMsg.EOH_TEL_CNT));
		
		// 更新年月日時分秒(システム日時)
		ku0021Msg.set(KU0021ETMsg.UPD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 更新オペレータアカウント(オペレータアカウント)
		ku0021Msg.set(KU0021ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));
		
		// 更新実行
		ku0021SecProc.update(ku0021Msg);
		
		return true;
	}
	
	/**
	 * ネットに電話を併合する_工事案件＜eo光ネットマンション＞更新
	 * @param heigoMtKu0061Msg	併合元工事案件＜eo光ネットマンション＞情報
	 * @param heigoSkKu0061Msg	併合先工事案件＜eo光ネットマンション＞情報
	 * @param inCBSMsg	ＣＢＳメッセージ
	 * @return	実行結果
	 * @throws CAANException
	 */
	private boolean addTelKu0061(CAANMsg heigoMtKu0061Msg, CAANMsg heigoSkKu0061Msg, CAANMsg inCBSMsg) throws CAANException
	{
		JKUejbKU0061SecProc ku0061SecProc = new JKUejbKU0061SecProc();
		CAANMsg ku0061Msg = new CAANMsg(KU0061ETMsg.class.getName());
		
		// 工事案件番号(併合先工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.KOJIAK_NO, heigoSkKu0061Msg.getString(KU0061ETMsg.KOJIAK_NO));
		
		// eo光電話宅内工事有無(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.EOH_TEL_TAKNIKJ_UM, heigoMtKu0061Msg.getString(KU0061ETMsg.EOH_TEL_TAKNIKJ_UM));
		// eo光電話番号1(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.EOH_TELNO_1, heigoMtKu0061Msg.getString(KU0061ETMsg.EOH_TELNO_1));
		// 番ポ有無1(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_UM_1, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_UM_1));
		// 番ポ予定年月日1(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_RSV_YMD_1, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_RSV_YMD_1));
		// 番ポ元通信事業者コード1(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_MOTO_TUSHIN_JGS_CD_1, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_MOTO_TUSHIN_JGS_CD_1));
		// 同番移転有無1(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.DOBANITEN_UM_1, heigoMtKu0061Msg.getString(KU0061ETMsg.DOBANITEN_UM_1));
		// 番ポ工事要否1(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_KOJI_YH_1, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_KOJI_YH_1));
		// eo光電話番号2(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.EOH_TELNO_2, heigoMtKu0061Msg.getString(KU0061ETMsg.EOH_TELNO_2));
		// 番ポ有無2(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_UM_2, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_UM_2));
		// 番ポ予定年月日2(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_RSV_YMD_2, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_RSV_YMD_2));
		// 番ポ元通信事業者コード2(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_MOTO_TUSHIN_JGS_CD_2, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_MOTO_TUSHIN_JGS_CD_2));
		// 同番移転有無2(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.DOBANITEN_UM_2, heigoMtKu0061Msg.getString(KU0061ETMsg.DOBANITEN_UM_2));
		// 番ポ工事要否2(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_KOJI_YH_2, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_KOJI_YH_2));
		// eo光電話番号3(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.EOH_TELNO_3, heigoMtKu0061Msg.getString(KU0061ETMsg.EOH_TELNO_3));
		// 番ポ有無3(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_UM_3, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_UM_3));
		// 番ポ予定年月日3(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_RSV_YMD_3, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_RSV_YMD_3));
		// 番ポ元通信事業者コード3(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_MOTO_TUSHIN_JGS_CD_3, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_MOTO_TUSHIN_JGS_CD_3));
		// 同番移転有無3(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.DOBANITEN_UM_3, heigoMtKu0061Msg.getString(KU0061ETMsg.DOBANITEN_UM_3));
		// 番ポ工事要否3(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_KOJI_YH_3, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_KOJI_YH_3));
		// eo光電話番号4(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.EOH_TELNO_4, heigoMtKu0061Msg.getString(KU0061ETMsg.EOH_TELNO_4));
		// 番ポ有無4(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_UM_4, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_UM_4));
		// 番ポ予定年月日4(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_RSV_YMD_4, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_RSV_YMD_4));
		// 番ポ元通信事業者コード4(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_MOTO_TUSHIN_JGS_CD_4, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_MOTO_TUSHIN_JGS_CD_4));
		// 同番移転有無4(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.DOBANITEN_UM_4, heigoMtKu0061Msg.getString(KU0061ETMsg.DOBANITEN_UM_4));
		// 番ポ工事要否4(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_KOJI_YH_4, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_KOJI_YH_4));
		// eo光電話番号5(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.EOH_TELNO_5, heigoMtKu0061Msg.getString(KU0061ETMsg.EOH_TELNO_5));
		// 番ポ有無5(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_UM_5, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_UM_5));
		// 番ポ予定年月日5(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_RSV_YMD_5, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_RSV_YMD_5));
		// 番ポ元通信事業者コード5(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_MOTO_TUSHIN_JGS_CD_5, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_MOTO_TUSHIN_JGS_CD_5));
		// 同番移転有無5(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.DOBANITEN_UM_5, heigoMtKu0061Msg.getString(KU0061ETMsg.DOBANITEN_UM_5));
		// 番ポ工事要否5(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.BMP_KOJI_YH_5, heigoMtKu0061Msg.getString(KU0061ETMsg.BMP_KOJI_YH_5));
		// eo光電話台数(併合元工事案件＜eo光ネットマンション＞の同一項目)
		ku0061Msg.set(KU0061ETMsg.EOH_TEL_CNT, heigoMtKu0061Msg.getString(KU0061ETMsg.EOH_TEL_CNT));
		
		// 更新年月日時分秒(システム日付)
		ku0061Msg.set(KU0061ETMsg.UPD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 更新オペレータアカウント(共通部：オペレータＩＤ)
		ku0061Msg.set(KU0061ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));

		// 更新実行
		ku0061SecProc.update(ku0061Msg);
		
		return true;
	}
	
	/**
	 * サービス契約_工事案件更新
	 * @param heigoMtKu0081Msg	併合元サービス契約_工事案件情報
	 * @param heigoSkKu0081Msg	併合先サービス契約_工事案件情報
	 * @param inCBSMsg	ＣＢＳメッセージ
	 * @return	実行結果
	 * @throws CAANException
	 */
	private boolean updKu0081(CAANMsg heigoMtKu0081Msg, CAANMsg heigoSkKu0081Msg, CAANMsg inCBSMsg) throws CAANException
	{
		JKUejbKU0081SecProc ku0081SecProc = new JKUejbKU0081SecProc();
		CAANMsg ku0081Msg = new CAANMsg(KU0081ETMsg.class.getName());
		
		// サービス契約番号(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVC_KEI_NO, heigoMtKu0081Msg.getString(KU0081ETMsg.SVC_KEI_NO));
		// 工事案件番号(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.KOJIAK_NO, heigoMtKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO));
		
		// サービス契約回線内訳番号(併合先サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVC_KEI_KAISEN_UCWK_NO, heigoSkKu0081Msg.getString(KU0081ETMsg.SVC_KEI_KAISEN_UCWK_NO));
		
		// 更新年月日時分秒(システム日付)
		ku0081Msg.set(KU0081ETMsg.UPD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 更新オペレータアカウント(共通部：オペレータＩＤ)
		ku0081Msg.set(KU0081ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));
		
		// 更新実行
		ku0081SecProc.update(ku0081Msg);
		
		return true;
	}
	
	/**
	 * サービス契約_工事案件登録
	 * @param heigoMtKu0081Msg	併合元サービス契約_工事案件情報
	 * @param heigoSkKu0081Msg	併合先サービス契約_工事案件情報
	 * @param inCBSMsg	ＣＢＳメッセージ
	 * @return	実行結果
	 * @throws CAANException
	 */
	private boolean insKu0081(CAANMsg heigoMtKu0081Msg, CAANMsg heigoSkKu0081Msg, CAANMsg inCBSMsg) throws CAANException
	{
		JKUejbKU0081SecProc ku0081SecProc = new JKUejbKU0081SecProc();
		CAANMsg ku0081Msg = new CAANMsg(KU0081ETMsg.class.getName());
		
		// サービス契約番号(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVC_KEI_NO, heigoMtKu0081Msg.getString(KU0081ETMsg.SVC_KEI_NO));
		
		// 工事案件番号(併合先サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.KOJIAK_NO, heigoSkKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO));
		
		// サービスコード(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVC_CD, heigoMtKu0081Msg.getString(KU0081ETMsg.SVC_CD));
		// SYSID(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SYSID, heigoMtKu0081Msg.getString(KU0081ETMsg.SYSID));
		
		// サービス契約回線内訳番号(併合先サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVC_KEI_KAISEN_UCWK_NO, heigoSkKu0081Msg.getString(KU0081ETMsg.SVC_KEI_KAISEN_UCWK_NO));
		
		// サービス契約_工事案件適用開始年月日(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVKEI_KOJIAK_TSTAYMD, heigoMtKu0081Msg.getString(KU0081ETMsg.SVKEI_KOJIAK_TSTAYMD));
		// サービス契約_工事案件適用終了年月日(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVKEI_KOJIAK_TENDYMD, heigoMtKu0081Msg.getString(KU0081ETMsg.SVKEI_KOJIAK_TENDYMD));
		
		// 登録年月日時分秒(システム日付)
		ku0081Msg.set(KU0081ETMsg.ADD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 登録オペレータアカウント(共通部：オペレータＩＤ)
		ku0081Msg.set(KU0081ETMsg.ADD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));
		// 更新年月日時分秒(システム日付)
		ku0081Msg.set(KU0081ETMsg.UPD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 更新オペレータアカウント(共通部：オペレータＩＤ)
		ku0081Msg.set(KU0081ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));
		// 無効フラグ(0：有効)
		ku0081Msg.set(KU0081ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);

		// 登録実行
		ku0081SecProc.create(ku0081Msg);
		return true;
	}
	
	/**
	 * サービス契約_工事案件更新(同サービス契約番号)
	 * @param heigoMtKu0081Msg	併合元サービス契約_工事案件情報
	 * @param heigoSkKu0081Msg	併合先サービス契約_工事案件情報
	 * @param inCBSMsg	ＣＢＳメッセージ
	 * @return	実行結果
	 * @throws CAANException
	 */
	private boolean updKu0081SameSvcKeiNo(CAANMsg heigoMtKu0081Msg, CAANMsg heigoSkKu0081Msg, CAANMsg inCBSMsg) throws CAANException
	{
		JKUejbKU0081SecProc ku0081SecProc = new JKUejbKU0081SecProc();
		CAANMsg ku0081Msg = new CAANMsg(KU0081ETMsg.class.getName());
		
		// サービス契約番号(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVC_KEI_NO, heigoMtKu0081Msg.getString(KU0081ETMsg.SVC_KEI_NO));
		
		// 工事案件番号(併合先サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.KOJIAK_NO, heigoSkKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO));
		
		// サービスコード(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVC_CD, heigoMtKu0081Msg.getString(KU0081ETMsg.SVC_CD));
		// SYSID(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SYSID, heigoMtKu0081Msg.getString(KU0081ETMsg.SYSID));
		
		// サービス契約回線内訳番号(併合先サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVC_KEI_KAISEN_UCWK_NO, heigoSkKu0081Msg.getString(KU0081ETMsg.SVC_KEI_KAISEN_UCWK_NO));
		
		// サービス契約_工事案件適用開始年月日(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVKEI_KOJIAK_TSTAYMD, heigoMtKu0081Msg.getString(KU0081ETMsg.SVKEI_KOJIAK_TSTAYMD));
		// サービス契約_工事案件適用終了年月日(併合元サービス契約_工事案件の同一項目)
		ku0081Msg.set(KU0081ETMsg.SVKEI_KOJIAK_TENDYMD, heigoMtKu0081Msg.getString(KU0081ETMsg.SVKEI_KOJIAK_TENDYMD));
		
		// 更新年月日時分秒(システム日付)
		ku0081Msg.set(KU0081ETMsg.UPD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 更新オペレータアカウント(共通部：オペレータＩＤ)
		ku0081Msg.set(KU0081ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));
		// 無効フラグ(0：有効)
		ku0081Msg.set(KU0081ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);

		// 登録実行
		ku0081SecProc.update(ku0081Msg);
		return true;
	}
	
	/**
	 * サービス契約_工事案件適用終了年月日更新
	 * @param heigoMtKu0081Msg	併合元サービス契約_工事案件情報
	 * @param inCBSMsg	ＣＢＳメッセージ
	 * @return	実行結果
	 * @throws CAANException
	 */
	private boolean updKu0081TEndYmd(CAANMsg heigoMtKu0081Msg, CAANMsg inCBSMsg) throws CAANException
	{
		JKUejbKU0081SecProc ku0081SecProc = new JKUejbKU0081SecProc();
		CAANMsg ku0081Msg = new CAANMsg(KU0081ETMsg.class.getName());
		
		// サービス契約番号
		ku0081Msg.set(KU0081ETMsg.SVC_KEI_NO, heigoMtKu0081Msg.getString(KU0081ETMsg.SVC_KEI_NO));
		// 工事案件番号
		ku0081Msg.set(KU0081ETMsg.KOJIAK_NO, heigoMtKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO));
		// サービス契約_工事案件適用終了年月日
		ku0081Msg.set(KU0081ETMsg.SVKEI_KOJIAK_TENDYMD, JPCModelCommon.getOpeDate(inCBSMsg, null));
		// 更新年月日時分秒(システム日付)
		ku0081Msg.set(KU0081ETMsg.UPD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
		// 更新オペレータアカウント(共通部：オペレータＩＤ)
		ku0081Msg.set(KU0081ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));
		
		// 登録実行
		ku0081SecProc.update(ku0081Msg);
		return true;
	}
	
	/**
	 * 申込明細_工事案件登録処理
	 * @param heigoMtKu0081Msg	併合元サービス契約_工事案件情報
	 * @param heigoSkKojiakNo	併合先工事案件番号
	 * @param inCBSMsg			ＣＢＳメッセージ
	 * @return	実行結果
	 * @throws CAANException
	 */
	private boolean insKu0091(CAANMsg heigoMtKu0081Msg, String heigoSkKojiakNo, CAANMsg inCBSMsg) throws CAANException
	{
		JKUejbKU0091SecProc ku0091SecProc = new JKUejbKU0091SecProc();
		CAANMsg ku0091Msg = new CAANMsg(KU0091ETMsg.class.getName());
		
		// 工事案件番号
		ku0091Msg.set(KU0091ETMsg.KOJIAK_NO, heigoMtKu0081Msg.getString(KU0081ETMsg.KOJIAK_NO));
		// 無効フラグ
		ku0091Msg.set(KU0091ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
		
		CAANMsg[] ku0091MsgArray = ku0091SecProc.findByCondition(ku0091Msg);
		
		if (null == ku0091MsgArray)
		{
			return true;
		}
		
		// ---申込明細_工事案件の登録
		
		for (int i = 0; i < ku0091MsgArray.length; ++i)
		{
			ku0091Msg = ku0091MsgArray[i];
			
			// 工事案件番号
			ku0091Msg.set(KU0091ETMsg.KOJIAK_NO, heigoSkKojiakNo);
			
			// キーが重複しない場合のみ登録を行う
			if(false == ku0091SecProc.isExistsPrimaryKey(ku0091Msg, false))
			{
				// 登録年月日時分秒
				ku0091Msg.set(KU0091ETMsg.ADD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
				// 登録ユーザーアカウント
				ku0091Msg.set(KU0091ETMsg.ADD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));
				// 更新年月日時分秒
				ku0091Msg.set(KU0091ETMsg.UPD_DTM, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATEDATETIME));
				// 更新ユーザーアカウント
				ku0091Msg.set(KU0091ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0081C030CBSMsg.OPERATORID));
				// 無効フラグ
				ku0091Msg.set(KU0091ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
				
				// 登録処理
				ku0091SecProc.create(ku0091Msg);
			}
		}
		return true;
	}
	
	/**
	 * 工事案件＜eo光ネット＞取得処理
	 * @param kojiakNo	工事案件番号
	 * @return	工事案件＜eo光ネット＞情報
	 * @throws CAANException
	 */
	private CAANMsg getKu0021Msg(String kojiakNo) throws CAANException
	{
		CAANMsg ku0021Msg = new CAANMsg(KU0021ETMsg.class.getName());
		
		// 工事案件番号
		ku0021Msg.set(KU0021ETMsg.KOJIAK_NO, kojiakNo);
		
		return new JKUejbKU0021SecProc().findByPrimaryKey(ku0021Msg, true);
	}
	
	/**
	 * 工事案件＜eo光テレビ＞取得処理
	 * @param kojiakNo	工事案件番号
	 * @return	工事案件＜eo光テレビ＞情報
	 * @throws CAANException
	 */
	private CAANMsg getKu0031Msg(String kojiakNo) throws CAANException
	{
		CAANMsg ku0031Msg = new CAANMsg(KU0031ETMsg.class.getName());
		
		// 工事案件番号
		ku0031Msg.set(KU0031ETMsg.KOJIAK_NO, kojiakNo);
		
		return new JKUejbKU0031SecProc().findByPrimaryKey(ku0031Msg, true);
	}
	
	/**
	 * 工事案件＜eo光テレビ回線＞取得処理
	 * @param kojiakNo	工事案件番号
	 * @return	工事案件＜eo光テレビ回線＞情報
	 * @throws CAANException
	 */
	private CAANMsg getKu0041Msg(String kojiakNo) throws CAANException
	{
		CAANMsg ku0041Msg = new CAANMsg(KU0041ETMsg.class.getName());
		
		// 工事案件番号
		ku0041Msg.set(KU0041ETMsg.KOJIAK_NO, kojiakNo);
		
		return new JKUejbKU0041SecProc().findByPrimaryKey(ku0041Msg, true);
	}
	
	/**
	 * 工事案件＜eo光ネットマンション＞取得処理
	 * @param kojiakNo	工事案件番号
	 * @return	工事案件＜eo光ネットマンション＞
	 * @throws CAANException
	 */
	private CAANMsg getKu0061Msg(String kojiakNo) throws CAANException
	{
		CAANMsg ku0061Msg = new CAANMsg(KU0061ETMsg.class.getName());
		
		// 工事案件番号
		ku0061Msg.set(KU0061ETMsg.KOJIAK_NO, kojiakNo);
		
		return new JKUejbKU0061SecProc().findByPrimaryKey(ku0061Msg, true);
	}
	
	/**
	 * ２次元配列から、指定された条件に合致する配列を取得する
	 * @param arrayCount	配列の要素番号
	 * @param value			比較したい値
	 * @param fromArray		チェックを行う２次元配列
	 * @return				条件に合致する２次元配列
	 */
	private String[][] selectArray(int arrayCount, String value, String[][] fromArray)
	{
		List<String[]> retList = new ArrayList<String[]>();
		if (null == fromArray)
		{
			return null;
		}
		for (int i = 0; i < fromArray.length; ++i)
		{
			if (fromArray[i][arrayCount] == null || fromArray[i][arrayCount].equals(value))
			{
				retList.add(fromArray[i]);
			}
		}
		
		if(retList.size() == 0)
		{
			return null;
		}
		
		return retList.toArray(new String[retList.size()][fromArray[0].length]);
	}
	
	/**
	 * String[]への存在チェック
	 * @param matrix
	 * @param str
	 * @return boolean
	 */
	private static boolean chkMatrix(String[] matrix, String str)
	{
		for(int i = 0; i < matrix.length; i++)
		{
			if(matrix[i].equals(str))
			{
				return true;
			}
		}
		return false;
	}
	
	/**
	 * リレーションエラーを設定します
	 * @param inCBSMsg		CBSメッセージ
	 * @param errContents	エラーを設定する項目
	 * @param errCd			設定するエラーコード
	 */
	private void setRelationError(CAANMsg inCBSMsg, String errContents, String errCd)
	{
		// エラーを設定する
		inCBSMsg.set(errContents, errCd);
		// ステータスを設定する
		inCBSMsg.set(EKU0081C030CBSMsg.STATUS, StatusCodes.RELATION_ERR);
	}

}
