/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JEKU0041C010TPMA
*	ソースファイル名：JEKU0041C010TPMA.java
*	作成者			：富士通
*	日付			：2011年07月28日
*＜機能概要＞
*	eo光テレビ回線を更新するサービスインターフェイス
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ1.00.00
*	ｖ3.00.00	2012/01/19	FJ)日根		【ANK-0087-00-00】FCDSへの受付情報差分連携対応
*	ｖ4.00.00	2012/06/15	FJ)日根		【ANK-0398-00-00】住所管理に伴う「例外登録」の管理追加対応
*	ｖ4.00.00	2012/12/11	FJ)高橋		【ANK-1352-00-00】緊急出荷追加対応
*	ｖ5.00.00	2013/09/14	FJ)高橋		【OM-2013-0002022】
*	ｖ5.00.01	2013/09/16	FJ)阪口		【OM-2013-0001953】
*	ｖ11.00.00	2014/11/18	FJ)阪口		【OM-2014-0003634】お客様情報変更時に自宅電話番号が設定されない
*	ｖ31.00.00	2017/11/02	FJ)柳川		【ANK-3136-00-00】OPMSハードウエア保守切れ対応(STEP2-2)
*	ｖ49.00.00	2020/05/25	FJ)坂本		【OM-2018-0001119】
*	ｖ61.00.00	2023/03/27	GDC）v.auditor	【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応_Step2
********************************************************************************/

package eo.ejb.cbs.mainproc;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANFinderException;
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.common.util.JKUCheckSTBCount;
import eo.ejb.cbm.entity.CK0011ETMsg;
import eo.ejb.cbm.entity.KU0011ETMsg;
import eo.ejb.cbm.entity.KU0011LE;
import eo.ejb.cbm.entity.KU0021ETMsg;
import eo.ejb.cbm.entity.KU0041ETMsg;
import eo.ejb.cbm.entity.KU0061ETMsg;
import eo.ejb.cbm.entity.KU0081ETMsg;
import eo.ejb.cbm.entity.KU0081LE;
import eo.ejb.cbm.entity.KU0101ETMsg;
import eo.ejb.cbm.entity.KU0101LE;
import eo.ejb.cbm.entity.KU0141ETMsg;
import eo.ejb.cbm.entity.KU0141LE;
import eo.ejb.cbs.cbsmsg.EKU0041C010CBSMsg;
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.JKUejbKU0041SecProc;
import eo.ejb.common.db.JKUejbKU0061SecProc;
import eo.ejb.common.db.JKUejbKU0081SecProc;
import eo.ejb.common.db.JKUejbKU0101SecProc;


/**
 * <p>
 * 工事案件＜ｅｏ光テレビ回線＞諸変更の独自処理を呼び出す部品です。
 * </p>
 * @author 富士通
 */
public class JEKU0041C010TPMA implements TemplateMainHandler
{
	/**
	 * コンストラクタです。
	 */
	public JEKU0041C010TPMA()
	{
		super();
	}
	
	/**
	 * 主処理
	 * @param inCBSMsg
	 * @param inContext
	 * @throws CAANException 
	 */
	public void invoke(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANException
	{
		// 変更パターン取得用マップ
		HashMap<String, Boolean> changePatternMap = new HashMap<String, Boolean>();
		
		// 変更パターン取得処理
		changePatternMap = getChangePatternList(inCBSMsg);
		
		// 変更情報マップ
		HashMap<String, List<CAANMsg>> changeDataMap = new HashMap<String, List<CAANMsg>>();
		
		// 変更対象工事案件番号リスト
		List<String> kojiAkNoList = new ArrayList<String>();
		List<String> tempKojiAkNoList = null;
		
		// 契約者情報変更処理
		if (changePatternMap.get(JKUStrConst.CHANGE_PATTERN_KOKYAKU))
		{
			// 契約者情報変更対象取得
			changeDataMap = getChangeKokyakuDataMap(inCBSMsg, inContext);
			
			if(changeDataMap == null)
			{
				return;
			}
			
			// 契約者情報変更
			tempKojiAkNoList = updateKokyakuData(changeDataMap, inCBSMsg);
			
			// 変更対象の工事案件番号リストを取得する
			JKUModelCommon.setMskmDtlNoKojiakNoList(tempKojiAkNoList, kojiAkNoList);
		}
		
		// サービス契約変更処理
		if (changePatternMap.get(JKUStrConst.CHANGE_PATTERN_SVC))
		{
			// サービス契約変更対象取得
			changeDataMap = getChangeSvcDataMap(inCBSMsg, inContext);
			
			if(changeDataMap == null)
			{
				return;
			}
			
			// サービス契約変更
			tempKojiAkNoList = updateSvcData(changeDataMap, inCBSMsg);
			
			// 変更対象の工事案件番号リストを取得する
			JKUModelCommon.setMskmDtlNoKojiakNoList(tempKojiAkNoList, kojiAkNoList);
		}
		
		// 回線変更処理
		if (changePatternMap.get(JKUStrConst.CHANGE_PATTERN_KAISEN))
		{
			// 回線変更対象取得
			changeDataMap = getChangeKaisenDataMap(inCBSMsg, inContext);
			
			if(changeDataMap == null)
			{
				return;
			}
			
			// 回線変更変更
			tempKojiAkNoList = updateKaisenData(changeDataMap, inCBSMsg);
			
			if(null == tempKojiAkNoList)
			{
				return;
			}
			
			// 変更対象の工事案件番号リストを取得する
			JKUModelCommon.setMskmDtlNoKojiakNoList(tempKojiAkNoList, kojiAkNoList);
		}
		
		// 工事変更処理
		if (changePatternMap.get(JKUStrConst.CHANGE_PATTERN_KOJI))
		{
			// 工事変更対象取得
			changeDataMap = getChangeKojiDataMap(inCBSMsg, inContext);
			
			if(changeDataMap == null)
			{
				return;
			}
			
			// 工事変更
			tempKojiAkNoList = updateKojiData(changeDataMap, inCBSMsg);
			
			// 変更対象の工事案件番号リストを取得する
			JKUModelCommon.setMskmDtlNoKojiakNoList(tempKojiAkNoList, kojiAkNoList);
		}
		// 機器変更処理
		if (changePatternMap.get(JKUStrConst.CHANGE_PATTERN_KIKI))
		{
			// 機器情報変更処理対象取得
			changeDataMap = getChangeKikiDataMap(inCBSMsg, inContext);
			
			if(changeDataMap == null)
			{
				return;
			}
			
			// 機器変更
			tempKojiAkNoList = updateKikiData(changeDataMap, inCBSMsg);
			
			// 変更対象の工事案件番号リストを取得する
			JKUModelCommon.setMskmDtlNoKojiakNoList(tempKojiAkNoList, kojiAkNoList);
		}
		// 請求先変更処理
		if (changePatternMap.get(JKUStrConst.CHANGE_PATTERN_SEIKYUSAKI))
		{
			// サービス変更対象取得
			changeDataMap = getChangeSvcDataMap(inCBSMsg, inContext);
			
			if(changeDataMap == null)
			{
				return;
			}
			
			// 請求先変更
			tempKojiAkNoList = updateSeikyuSaki(changeDataMap, inCBSMsg);
			
			// 変更対象の工事案件番号リストを取得する
			JKUModelCommon.setMskmDtlNoKojiakNoList(tempKojiAkNoList, kojiAkNoList);
		}
		// 住所変更確定処理
		if (changePatternMap.get(JKUStrConst.CHANGE_PATTERN_AD_CHG_FIX))
		{
			// 住所変更確定処理
			updateAdChgFix(inCBSMsg, inContext);
		}
		
		// アウトプット項目を設定する
		// 更新年月日時分秒(システム日付)
		inCBSMsg.set(EKU0041C010CBSMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
		// 更新オペレータアカウント(共通部：オペレータＩＤ)
		inCBSMsg.set(EKU0041C010CBSMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
		// 無効フラグ
		inCBSMsg.set(EKU0041C010CBSMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
	}
	
	/**
	 * 変更パターン取得処理
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @return HashMap<String, Boolean>
	 * @throws CAANException
	 */
	private HashMap<String, Boolean> getChangePatternList(CAANMsg inCBSMsg) throws CAANException
	{
		// 変更パターンマップ
		HashMap<String, Boolean> map = new HashMap<String, Boolean>();
		
		// ---マップの初期化
		map.put(JKUStrConst.CHANGE_PATTERN_KOKYAKU, false);
		map.put(JKUStrConst.CHANGE_PATTERN_KAISEN, false);
		map.put(JKUStrConst.CHANGE_PATTERN_SVC, false);
		map.put(JKUStrConst.CHANGE_PATTERN_KOJI, false);
		map.put(JKUStrConst.CHANGE_PATTERN_KIKI, false);
		map.put(JKUStrConst.CHANGE_PATTERN_SEIKYUSAKI, false);
		map.put(JKUStrConst.CHANGE_PATTERN_AD_CHG_FIX, false);
		
		// ---変更パターン取得
		
		// 工事受付コードが「内容変える」の場合
		if (JKUStrConst.CD99991_NAIYO_CHG.equals(inCBSMsg.getString(EKU0041C010CBSMsg.KOJI_UK_CD)))
		{
			// 工事受付詳細コードが「お客様情報変える」の場合
			if (JKUStrConst.CD00885_CUST_INFO_CHG.equals(inCBSMsg.getString(EKU0041C010CBSMsg.KOJI_UK_DTAIL_CD)))
			{
				// サービス契約番号が存在しない場合、更新できない
				if (null != inCBSMsg.getString(EKU0041C010CBSMsg.SVC_KEI_NO))
				{
					// 契約者情報変更
					map.put(JKUStrConst.CHANGE_PATTERN_KOKYAKU, true);
				}
			}
			
			// 工事受付詳細コードが「回線情報変える」の場合
			if (JKUStrConst.CD00885_KISN_CHG.equals(inCBSMsg.getString(EKU0041C010CBSMsg.KOJI_UK_DTAIL_CD)))
			{
				// サービス契約内訳番号が存在しない場合、更新できない
				if (null != inCBSMsg.getString(EKU0041C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO))
				{
					// 回線変更
					map.put(JKUStrConst.CHANGE_PATTERN_KAISEN, true);
				}
			}
			
			// 工事受付詳細コードが「サービス内容変える」の場合
			if (JKUStrConst.CD00885_SVC_NAIYO_CHG.equals(inCBSMsg.getString(EKU0041C010CBSMsg.KOJI_UK_DTAIL_CD)))
			{
				// サービス契約番号が存在しない場合、更新できない
				if (null != inCBSMsg.getString(EKU0041C010CBSMsg.SVC_KEI_NO))
				{
					// サービス契約変更
					map.put(JKUStrConst.CHANGE_PATTERN_SVC, true);
				}
			}
			
			// 工事受付詳細コードが「工事情報変える」の場合
			if (JKUStrConst.CD00885_KOJI_INFO_CHG.equals(inCBSMsg.getString(EKU0041C010CBSMsg.KOJI_UK_DTAIL_CD)))
			{
				// 工事案件番号が存在しない場合、更新できない
				if (null != inCBSMsg.getString(EKU0041C010CBSMsg.KOJIAK_NO))
				{
					// 工事変更
					map.put(JKUStrConst.CHANGE_PATTERN_KOJI, true);
				}
			}
			
			// 工事受付詳細コードが「機器情報変える」の場合
			if (JKUStrConst.CD00885_KIKI_INFO_CHG.equals(inCBSMsg.getString(EKU0041C010CBSMsg.KOJI_UK_DTAIL_CD)))
			{
				// サービス契約番号が存在しない場合、更新できない
				if (null != inCBSMsg.getString(EKU0041C010CBSMsg.SVC_KEI_NO))
				{
					// 機器変更
					map.put(JKUStrConst.CHANGE_PATTERN_KIKI, true);
				}
			}
			
			// 工事受付詳細コードが「請求先情報変える」の場合
			if (JKUStrConst.CD00885_SEIKY_SAKI_INFO_CHG.equals(inCBSMsg.getString(EKU0041C010CBSMsg.KOJI_UK_DTAIL_CD)))
			{
				// サービス契約番号が存在しない場合、更新できない
				if (null != inCBSMsg.getString(EKU0041C010CBSMsg.SVC_KEI_NO))
				{
					// 請求先情報変更
					map.put(JKUStrConst.CHANGE_PATTERN_SEIKYUSAKI, true);
				}
			}
			
			// 工事受付詳細コードが「住所変更確定処理」の場合
			if (JKUStrConst.CD00885_AD_CHG_FIX.equals(inCBSMsg.getString(EKU0041C010CBSMsg.KOJI_UK_DTAIL_CD)))
			{
				map.put(JKUStrConst.CHANGE_PATTERN_AD_CHG_FIX, true);
			}
		}
		return map;
	}
	
	/**
	 * 契約者情報変更対象取得
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param inContext
	 * @return HashMap<String, List<CAANMsg>>
	 * @throws CAANException 
	 */
	private HashMap<String, List<CAANMsg>> getChangeKokyakuDataMap(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANException
	{
		// 変更対象マップ
		HashMap<String, List<CAANMsg>> changeMap = new HashMap<String, List<CAANMsg>>();
		
		// 変更対象工事案件番号
		List<String> list = new ArrayList<String>();
		
		// 検索対象SYSIDリスト
		List<String> checkSysId = new ArrayList<String>();
		
		// チェック対象工事案件番号
		List<String> checkKojiakNo = new ArrayList<String>();

		// サービス契約 ロジカルエンティティクラス
		KU0081LE leKU0081 = new KU0081LE();
		
		// サービス契約のETメッセージを作成
		CAANMsg msgKU0081 = new CAANMsg(KU0081ETMsg.class.getName());
		
		// サービス契約番号
		msgKU0081.set(KU0081ETMsg.SVC_KEI_NO, inCBSMsg.getString(EKU0041C010CBSMsg.SVC_KEI_NO));
		// 無効フラグ
		msgKU0081.set(KU0081ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
		
		CAANMsg[] arrMsgKU0081 = leKU0081.findByCondition(msgKU0081);
		
		if (null != arrMsgKU0081)
		{
			for(CAANMsg msg : arrMsgKU0081)
			{
				if (-1 == checkSysId.indexOf(msg.getString(KU0081ETMsg.SYSID)))
				{
					checkSysId.add(msg.getString(KU0081ETMsg.SYSID));
				}
			}
		}
		
		// 工事案件 ロジカルエンティティクラス
		KU0011LE leKU0011 = new KU0011LE();
		
		for (int i = 0; i < checkSysId.size(); ++i)
		{
			// 工事案件のETメッセージを作成
			CAANMsg msgKU0011 = new CAANMsg(KU0011ETMsg.class.getName());
			
			// SYSID
			msgKU0011.set(KU0011ETMsg.SYSID, checkSysId.get(i));
			// 無効フラグ
			msgKU0011.set(KU0011ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
			
			// 更新対象のレコード取得
			CAANMsg[] arrMsgKU0011 = leKU0011.findByCondition(msgKU0011);
			
			if (arrMsgKU0011 != null)
			{
				for (CAANMsg msg : arrMsgKU0011)
				{
					checkKojiakNo.add(msg.getString(KU0011ETMsg.KOJIAK_NO));
				}
			}
		}
		
		// 工事案件副次処理部品
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		// 
		CAANMsg ku0011Msg = null;
		
		for(String cKojiakNo: checkKojiakNo)
		{
			ku0011Msg = new CAANMsg(KU0011ETMsg.class.getName());
			
			// 工事案件番号
			ku0011Msg.set(KU0011ETMsg.KOJIAK_NO, cKojiakNo);
			
			// PK検索を実行
			ku0011Msg = ku0011SecProc.findByPrimaryKey(ku0011Msg, true);
			
			// 仕掛中、最新、チェック
			if (JKUModelCommon.isSkkrOrSaishinKojiak(ku0011Msg))
			{
				// 工事案件番号格納
				list.add(ku0011Msg.getString(KU0011ETMsg.KOJIAK_NO));
			}
			
		}
		
		if(list.size() == 0)
		{
			return null;
		}
		
		List<CAANMsg> ku0011MsgList = getChangeDataMapKU0011(list);
		
		if(isLockedKojiak(ku0011MsgList, inContext))
		{
			// 工事案件排他ロックエラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_NO_ERR, "EB");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		List<CAANMsg> ku0081MsgList = getChangeDataMapKU0081(list);
		
		if(ku0081MsgList.size() == 0)
		{
			// サービス契約未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_NO_ERR, "ED");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		// 機能コード1以外の場合はチェックのみのため処理を終了する
		if (!JPCModelConstant.FUNC_CD_1.equals(inCBSMsg.getString(EKU0041C010CBSMsg.FUNC_CODE)))
		{
			return null;
		}
		
		// 変更対象取得＿工事案件
		changeMap.put(JKUStrConst.SCHEMA_KU0011, ku0011MsgList);
		
		// 変更対象取得＿先行設計
		changeMap.put(JKUStrConst.SCHEMA_KU0101, getChangeDataMapKU0101(list));
		
		// 変更対象取得＿サービス契約
		changeMap.put(JKUStrConst.SCHEMA_KU0081, ku0081MsgList);
		
		return changeMap;
	}
	
	/**
	 * サービス契約情報変更対象取得
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param inContext
	 * @return HashMap<String, List<CAANMsg>>
	 * @throws CAANException 
	 */
	private HashMap<String, List<CAANMsg>> getChangeSvcDataMap(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANException
	{
		// 変更対象マップ
		HashMap<String, List<CAANMsg>> changeMap = new HashMap<String, List<CAANMsg>>();
		
		// サービス契約_工事案件情報を保持するリスト
		List<CAANMsg> ku0081MsgList = new ArrayList<CAANMsg>();
		
		// サービス契約_工事案件副次処理部品
		JKUejbKU0081SecProc ku0081SecProc = new JKUejbKU0081SecProc();
		
		// サービス契約_工事案件のETメッセージを作成
		CAANMsg ku0081Msg = new CAANMsg(KU0081ETMsg.class.getName());
		
		// サービス契約番号
		ku0081Msg.set(KU0081ETMsg.SVC_KEI_NO, inCBSMsg.getString(EKU0041C010CBSMsg.SVC_KEI_NO));
		// 無効フラグ
		ku0081Msg.set(KU0081ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
		
		CAANMsg[] arrMsgKU0081 = ku0081SecProc.findByCondition(ku0081Msg);
		
		if (null != arrMsgKU0081)
		{
			for(CAANMsg msg : arrMsgKU0081)
			{
				ku0081MsgList.add(msg);
			}
		}
		
		if(ku0081MsgList.size() == 0)
		{
			// サービス契約未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_NO_ERR, "ED");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		// 工事案件副次処理部品
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		
		// 工事案件のETメッセージを作成
		CAANMsg ku0011Msg = new CAANMsg(KU0011ETMsg.class.getName());
		
		// 連携サービス契約番号
		ku0011Msg.set(KU0011ETMsg.RNKI_SVC_KEI_NO, inCBSMsg.getString(EKU0041C010CBSMsg.SVC_KEI_NO));
		// 無効フラグ
		ku0011Msg.set(KU0011ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
		
		CAANMsg[] arrMsgKU0011 = ku0011SecProc.findByCondition(ku0011Msg);
		
		// 工事案件情報を保持するリスト
		List<CAANMsg> ku0011MsgList = new ArrayList<CAANMsg>();
		// 工事案件番号を保持するリスト
		List<String> kojiakNoList = new ArrayList<String>();
		
		if (null != arrMsgKU0011)
		{
			for(CAANMsg msg : arrMsgKU0011)
			{
				// 仕掛中、最新、チェック
				if (JKUModelCommon.isSkkrOrSaishinKojiak(msg))
				{
					// 工事案件情報の格納
					ku0011MsgList.add(msg);
					// 工事案件番号の格納
					kojiakNoList.add(msg.getString(KU0011ETMsg.KOJIAK_NO));
				}
			}
		}
		
		// 工事案件は必ず取得できるわけではないので取得件数チェックは行わない
		
		// 工事案件が取得できた場合は排他チェック
		if(ku0011MsgList.size() > 0)
		{
			if(isLockedKojiak(ku0011MsgList, inContext))
			{
				// 工事案件排他ロックエラーを登録
				inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_NO_ERR, "EB");
				// ステータス
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
				return null;
			}
		}
		
		List<CAANMsg> ku0041MsgList = new ArrayList<CAANMsg>();
		
		// 工事案件が取得できた場合は工事案件＜ｅｏ光テレビ回線＞の取得と件数チェック
		if(ku0011MsgList.size() > 0)
		{
			ku0041MsgList = getChangeDataMapKU0041(kojiakNoList);
			
			if(ku0041MsgList.size() == 0)
			{
				// 工事案件＜ｅｏ光テレビ回線＞未存在エラーを登録
				inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_NO_ERR, "EC");
				// ステータス
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
				return null;
			}
		}
		
		List<CAANMsg> ku0101MsgList = new ArrayList<CAANMsg>();
		
		// 工事案件が取得できた場合は先行設計の取得
		if(ku0011MsgList.size() > 0)
		{
			ku0101MsgList = getChangeDataMapKU0101(kojiakNoList);
		}
		
		// 機能コード1以外の場合はチェックのみのため処理を終了する
		if (!JPCModelConstant.FUNC_CD_1.equals(inCBSMsg.getString(EKU0041C010CBSMsg.FUNC_CODE)))
		{
			return null;
		}
		
		// 変更対象取得＿工事案件
		changeMap.put(JKUStrConst.SCHEMA_KU0011, ku0011MsgList);
		
		// 変更対象取得＿工事案件＜ｅｏ光テレビ回線＞
		changeMap.put(JKUStrConst.SCHEMA_KU0041, ku0041MsgList);
		
		// 変更対象取得＿先行設計
		changeMap.put(JKUStrConst.SCHEMA_KU0101, ku0101MsgList);
		
		// 変更対象取得＿サービス契約
		changeMap.put(JKUStrConst.SCHEMA_KU0081, ku0081MsgList);
		
		return changeMap;
	}
	
	/**
	 * 機器情報変更処理対象取得
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param inContext
	 * @return HashMap<String, List<CAANMsg>>
	 * @throws CAANException 
	 */
	private HashMap<String, List<CAANMsg>> getChangeKikiDataMap(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANException
	{
		// 変更対象マップ
		HashMap<String, List<CAANMsg>> changeMap = new HashMap<String, List<CAANMsg>>();
		
		// 変更対象工事案件番号
		List<String> list = new ArrayList<String>();
		
		// チェック対象工事案件番号
		List<String> checkKojiakNo = new ArrayList<String>();
		
		// サービス契約 ロジカルエンティティクラス
		KU0081LE leKU0081 = new KU0081LE();
		
		// サービス契約のETメッセージを作成
		CAANMsg msgKU0081 = new CAANMsg(KU0081ETMsg.class.getName());
		// サービス契約番号
		msgKU0081.set(KU0081ETMsg.SVC_KEI_NO, inCBSMsg.getString(EKU0041C010CBSMsg.SVC_KEI_NO));
		// サービス契約回線内訳番号
		msgKU0081.set(KU0081ETMsg.SVC_KEI_KAISEN_UCWK_NO, inCBSMsg.getString(EKU0041C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO));
		// 無効フラグ
		msgKU0081.set(KU0081ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
		
		// 更新対象のレコード取得
		CAANMsg[] arrMsgKU0081 = leKU0081.findByCondition(msgKU0081);
		
		if (arrMsgKU0081 != null)
		{
			for (CAANMsg msg : arrMsgKU0081)
			{
				checkKojiakNo.add(msg.getString(KU0011ETMsg.KOJIAK_NO));
			}
		}
		
		// 工事案件副次処理部品
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		// 
		CAANMsg ku0011Msg = null;
		
		for(String cKojiakNo: checkKojiakNo)
		{
			ku0011Msg = new CAANMsg(KU0011ETMsg.class.getName());
			
			// 工事案件番号
			ku0011Msg.set(KU0011ETMsg.KOJIAK_NO, cKojiakNo);
			
			// PK検索を実行
			ku0011Msg = ku0011SecProc.findByPrimaryKey(ku0011Msg, true);
			
			// 機器変更仕掛チェック
			if (JKUModelCommon.isKikiHenkouSkkrKojiak(ku0011Msg))
			{
				// 工事案件番号格納
				list.add(ku0011Msg.getString(KU0011ETMsg.KOJIAK_NO));
			}
		}
		
		
		if(list.size() == 0)
		{
			// 工事案件未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_NO_ERR, "EA");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		List<CAANMsg> ku0011MsgList = getChangeDataMapKU0011(list);
		
		if(isLockedKojiak(ku0011MsgList, inContext))
		{
			// 工事案件排他ロックエラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_NO_ERR, "EB");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		List<CAANMsg> ku0041MsgList = getChangeDataMapKU0041(list);
		
		if(ku0041MsgList.size() == 0)
		{
			// 工事案件＜ｅｏ光テレビ回線＞未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_NO_ERR, "EC");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		List<CAANMsg> ku0081MsgList = getChangeDataMapKU0081(list);
		
		if(ku0081MsgList.size() == 0)
		{
			// サービス契約未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_NO_ERR, "ED");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		// 機能コード1以外の場合はチェックのみのため処理を終了する
		if (!JPCModelConstant.FUNC_CD_1.equals(inCBSMsg.getString(EKU0041C010CBSMsg.FUNC_CODE)))
		{
			return null;
		}
		
		// 変更対象取得＿工事案件
		changeMap.put(JKUStrConst.SCHEMA_KU0011, ku0011MsgList);
		
		// 変更対象取得＿工事案件＜ｅｏ光テレビ回線＞
		changeMap.put(JKUStrConst.SCHEMA_KU0041, ku0041MsgList);
		
		// 変更対象取得＿宅内機器
		changeMap.put(JKUStrConst.SCHEMA_KU0141, getChangeDataMapKU0141(list));
		
		return changeMap;
	}
	
	/**
	 * 回線情報変更対象取得
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param inContext
	 * @return HashMap<String, List<CAANMsg>>
	 * @throws CAANException 
	 */
	private HashMap<String, List<CAANMsg>> getChangeKaisenDataMap(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANException
	{
		// 変更対象マップ
		HashMap<String, List<CAANMsg>> changeMap = new HashMap<String, List<CAANMsg>>();
		
		// 変更対象工事案件番号
		List<String> list = new ArrayList<String>();
		
		// チェック対象工事案件番号
		List<String> checkKojiakNo = new ArrayList<String>();
		
		// サービス契約 ロジカルエンティティクラス
		KU0081LE leKU0081 = new KU0081LE();
		
		// サービス契約のETメッセージを作成
		CAANMsg msgKU0081 = new CAANMsg(KU0081ETMsg.class.getName());
		
		// サービス契約回線内訳番号
		msgKU0081.set(KU0081ETMsg.SVC_KEI_KAISEN_UCWK_NO, inCBSMsg.getString(EKU0041C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO));
		// 無効フラグ
		msgKU0081.set(KU0081ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
		
		// 更新対象のレコード取得
		CAANMsg[] arrMsgKU0081 = leKU0081.findByCondition(msgKU0081);
		
		if(arrMsgKU0081 != null)
		{
			for (CAANMsg msg : arrMsgKU0081)
			{
				checkKojiakNo.add(msg.getString(KU0081ETMsg.KOJIAK_NO));
			}
		}
		
		// 工事案件副次処理部品
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		// 
		CAANMsg ku0011Msg = null;
		
		for(String cKojiakNo: checkKojiakNo)
		{
			ku0011Msg = new CAANMsg(KU0011ETMsg.class.getName());
			
			// 工事案件番号
			ku0011Msg.set(KU0011ETMsg.KOJIAK_NO, cKojiakNo);
			
			// PK検索を実行
			ku0011Msg = ku0011SecProc.findByPrimaryKey(ku0011Msg, true);
			
			// 仕掛中、最新、チェック
			if (JKUModelCommon.isSkkrOrSaishinKojiak(ku0011Msg))
			{
				// 工事案件番号格納
				list.add(ku0011Msg.getString(KU0011ETMsg.KOJIAK_NO));
			}
			
		}
		
		
		if(list.size() == 0)
		{
			// 工事案件未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO_ERR, "EA");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		List<CAANMsg> ku0011MsgList = getChangeDataMapKU0011(list);
		
		if(isLockedKojiak(ku0011MsgList, inContext))
		{
			// 工事案件排他ロックエラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO_ERR, "EB");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		List<CAANMsg> ku0041MsgList = getChangeDataMapKU0041(list);
		
		if(ku0041MsgList.size() == 0)
		{
			// 工事案件＜ｅｏ光テレビ回線＞未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO_ERR, "EC");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		// 機能コード1以外の場合はチェックのみのため処理を終了する
		if (!JPCModelConstant.FUNC_CD_1.equals(inCBSMsg.getString(EKU0041C010CBSMsg.FUNC_CODE)))
		{
			return null;
		}
		
		// 変更対象取得＿工事案件
		changeMap.put(JKUStrConst.SCHEMA_KU0011, ku0011MsgList);
		
		// 変更対象取得＿工事案件＜ｅｏ光テレビ回線＞
		changeMap.put(JKUStrConst.SCHEMA_KU0041, ku0041MsgList);
		
		// 変更対象取得＿工事案件＜ｅｏ光ネット＞
		changeMap.put(JKUStrConst.SCHEMA_KU0021, getChangeDataMapKU0021(list));
		
		// 変更対象取得＿工事案件＜ｅｏ光ネットマンション＞
		changeMap.put(JKUStrConst.SCHEMA_KU0061, getChangeDataMapKU0061(list));
		
		// 変更対象取得＿先行設計
		changeMap.put(JKUStrConst.SCHEMA_KU0101, getChangeDataMapKU0101(list));
		
		return changeMap;
	}
	
	/**
	 * 工事情報変更対象取得
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param inContext
	 * @return HashMap<String, List<CAANMsg>>
	 * @throws CAANException 
	 */
	private HashMap<String, List<CAANMsg>> getChangeKojiDataMap(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANException
	{
		// 変更対象マップ
		HashMap<String, List<CAANMsg>> changeMap = new HashMap<String, List<CAANMsg>>();
		
		//工事案件番号
		String kojiakNo = inCBSMsg.getString(EKU0041C010CBSMsg.KOJIAK_NO);
		
		if (null == kojiakNo)
		{
			return null;
		}
		
		// 変更対象工事案件番号
		List<String> list = new ArrayList<String>();
		
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		CAANMsg ku0011Msg = new CAANMsg(KU0011ETMsg.class.getName());
		
		// 工事案件番号
		ku0011Msg.set(KU0011ETMsg.KOJIAK_NO, kojiakNo);
		
		ku0011Msg = ku0011SecProc.findByPrimaryKey(ku0011Msg, true);
		
		if (null == ku0011Msg)
		{
			// 工事案件未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.KOJIAK_NO_ERR, "EA");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		// 仕掛中、最新、チェック
		if (JKUModelCommon.isSkkrOrSaishinKojiak(ku0011Msg) || JKUStrConst.CD00474_TOROKU_ZM.equals(ku0011Msg.getString(KU0011ETMsg.KOJIAK_STAT)))
		{
			// 工事案件番号格納
			list.add(ku0011Msg.getString(KU0011ETMsg.KOJIAK_NO));
		}
		
		if(list.size() == 0)
		{
			// 工事案件未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.SVC_KEI_NO_ERR, "EA");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		List<CAANMsg> ku0011MsgList = new ArrayList<CAANMsg>();
		ku0011MsgList.add(ku0011Msg);
		
		if(isLockedKojiak(ku0011MsgList, inContext))
		{
			// 工事案件排他ロックエラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.KOJIAK_NO_ERR, "EB");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		List<CAANMsg> ku0041MsgList = getChangeDataMapKU0041(list);
		
		if(ku0041MsgList.size() == 0)
		{
			// 工事案件＜ｅｏ光テレビ回線＞未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.KOJIAK_NO_ERR, "EC");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return null;
		}
		
		// 機能コード1以外の場合はチェックのみのため処理を終了する
		if (!JPCModelConstant.FUNC_CD_1.equals(inCBSMsg.getString(EKU0041C010CBSMsg.FUNC_CODE)))
		{
			return null;
		}
		
		// 変更対象取得＿工事案件
		changeMap.put(JKUStrConst.SCHEMA_KU0011, ku0011MsgList);
		
		// 変更対象取得＿工事案件＜ｅｏ光テレビ回線＞
		changeMap.put(JKUStrConst.SCHEMA_KU0041, ku0041MsgList);
		
		return changeMap;
	}
	
	/**
	 * 変更対象取得＿工事案件
	 * @param list 工事案件番号
	 * @return List<CAANMsg>
	 * @throws CAANException 
	 */
	private List<CAANMsg> getChangeDataMapKU0011(List<String> list) throws CAANException
	{
		List<CAANMsg> returnList = new ArrayList<CAANMsg>();
		
		// 引数の工事案件番号の件数分、工事案件を取得する。
		for (String kojiakNo : list)
		{
			// 工事案件ＰＫ検索
			CAANMsg msgKU0011 = getKU0011FindByPrimaryKeyE(kojiakNo);
			
			if(msgKU0011 != null)
			{
				returnList.add(msgKU0011);
			}
		}
		
		return returnList;
	}

	/**
	 * 変更対象取得＿光テレビ回線
	 * @param list 工事案件番号
	 * @return List<CAANMsg>
	 * @throws CAANException 
	 */
	private List<CAANMsg> getChangeDataMapKU0041(List<String> list) throws CAANException
	{
		List<CAANMsg> returnList = new ArrayList<CAANMsg>();
		
		// 引数の工事案件番号の件数分、光テレビ回線を取得する。
		for (String kojiakNo : list)
		{
			// 工事案件＜ｅｏ光テレビ回線＞ 副次処理
			JKUejbKU0041SecProc sp0041 = new JKUejbKU0041SecProc();
			
			// 光テレビ回線のETメッセージを作成
			CAANMsg msgKU0041 = new CAANMsg(KU0041ETMsg.class.getName());
			
			// 工事案件番号
			msgKU0041.set(KU0041ETMsg.KOJIAK_NO, kojiakNo);
			
			// 更新対象のレコード取得
			msgKU0041 = sp0041.findByPrimaryKey(msgKU0041, true);
			
			if(msgKU0041 != null)
			{
				returnList.add(msgKU0041);
			}
		}
		
		return returnList;
	}
	
	/**
	 * 変更対象取得＿光ネット
	 * @param list 工事案件番号
	 * @return List<CAANMsg>
	 * @throws CAANException 
	 */
	private List<CAANMsg> getChangeDataMapKU0021(List<String> list) throws CAANException
	{
		List<CAANMsg> returnList = new ArrayList<CAANMsg>();
		
		// 引数の工事案件番号の件数分、光ネットを取得する。
		for (String kojiakNo : list)
		{
			// 工事案件＜ｅｏ光ネット＞ 副次処理
			JKUejbKU0021SecProc sp0021 = new JKUejbKU0021SecProc();
			
			// 光ネットのETメッセージを作成
			CAANMsg msgKU0021 = new CAANMsg(KU0021ETMsg.class.getName());
			
			// 工事案件番号
			msgKU0021.set(KU0021ETMsg.KOJIAK_NO, kojiakNo);
			
			// 更新対象のレコード取得
			msgKU0021 = sp0021.findByPrimaryKey(msgKU0021, true);
			
			if(msgKU0021 != null)
			{
				returnList.add(msgKU0021);
			}
		}
		
		return returnList;
	}
	
	/**
	 * 変更対象取得＿光ネットマンション
	 * @param list 工事案件番号
	 * @return List<CAANMsg>
	 * @throws CAANException 
	 */
	private List<CAANMsg> getChangeDataMapKU0061(List<String> list) throws CAANException
	{
		List<CAANMsg> returnList = new ArrayList<CAANMsg>();
		
		// 引数の工事案件番号の件数分、光ネットマンションを取得する。
		for (String kojiakNo : list)
		{
			// 工事案件＜ｅｏ光ネットマンション＞ 副次処理
			JKUejbKU0061SecProc sp0061 = new JKUejbKU0061SecProc();
			
			// 光ネットマンションのETメッセージを作成
			CAANMsg msgKU0061 = new CAANMsg(KU0061ETMsg.class.getName());
			
			// 工事案件番号
			msgKU0061.set(KU0061ETMsg.KOJIAK_NO, kojiakNo);
			
			// 更新対象のレコード取得
			msgKU0061 = sp0061.findByPrimaryKey(msgKU0061, true);
			
			if(msgKU0061 != null)
			{
				returnList.add(msgKU0061);
			}
		}
		
		return returnList;
	}

	/**
	 * 変更対象取得＿先行設計
	 * @param list 工事案件番号
	 * @return List<CAANMsg>
	 * @throws CAANException 
	 */
	private List<CAANMsg> getChangeDataMapKU0101(List<String> list) throws CAANException
	{
		List<CAANMsg> returnList = new ArrayList<CAANMsg>();
		
		// 引数の工事案件番号の件数分、先行設計を取得する。
		for (String kojiakNo : list)
		{
			// 先行設計 ロジカルエンティティクラス
			KU0101LE leKU0101 = new KU0101LE();
			
			// 先行設計のETメッセージを作成
			CAANMsg msgKU0101 = new CAANMsg(KU0101ETMsg.class.getName());
			
			// 工事案件番号
			msgKU0101.set(KU0101ETMsg.KOJIAK_NO, kojiakNo);
			// 先行設計ステータス
			msgKU0101.set(KU0101ETMsg.SNKSKI_STAT, JKUStrConst.SNKSKI_STAT_UK_ZM);
			// 無効フラグ
			msgKU0101.set(KU0101ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
			
			// 更新対象のレコード取得
			CAANMsg[] arrMsgKU0101 = leKU0101.findByCondition(msgKU0101);
			
			if(arrMsgKU0101 != null)
			{
				for (CAANMsg msg : arrMsgKU0101) {
					returnList.add(msg);
				}
			}
		}
		
		return returnList;
	}

	/**
	 * 変更対象取得＿宅内機器
	 * @param list 工事案件番号
	 * @return List<CAANMsg>
	 * @throws CAANException 
	 */
	private List<CAANMsg> getChangeDataMapKU0141(List<String> list) throws CAANException
	{
		List<CAANMsg> returnList = new ArrayList<CAANMsg>();
		boolean takniKikiSonzaiFlg = false;
		// 引数の工事案件番号の件数分、宅内機器を取得する。
		for (String kojiakNo : list)
		{
			//	工事案件データ取得
			CAANMsg msgKU0011 = getKU0011FindByPrimaryKeyE(kojiakNo);
			
			// 工事案件ステータスが｢現場作業完了済み」以降の場合は更新対象無し
			if (JKUStrConst.CD00474_GEMBA_SAGYO_FIN_ZM.equals(msgKU0011.getString(KU0011ETMsg.KOJIAK_STAT))
					|| JKUStrConst.CD00474_KOJI_FIN_ZM.equals(msgKU0011.getString(KU0011ETMsg.KOJIAK_STAT))
					|| JKUStrConst.CD00474_CHUSHI.equals(msgKU0011.getString(KU0011ETMsg.KOJIAK_STAT)))
			{
				continue;
			}
			
			// 工事案件対象宅内機器 ロジカルエンティティクラス
			KU0141LE leKU0141 = new KU0141LE();
			
			// 宅内機器のETメッセージを作成
			CAANMsg msgKU0141 = new CAANMsg(KU0141ETMsg.class.getName());
			
			// 工事案件番号
			msgKU0141.set(KU0141ETMsg.KOJIAK_NO, kojiakNo);
			// 無効フラグ
			msgKU0141.set(KU0141ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
			
			// 更新対象のレコード取得
			CAANMsg[] arrMsgKU0141 = leKU0141.findByCondition(msgKU0141);
			
			
			takniKikiSonzaiFlg = false;
			
			if(arrMsgKU0141 != null)
			{
				for (CAANMsg msg : arrMsgKU0141) {
					takniKikiSonzaiFlg = true;
					returnList.add(msg);
				}
			}
			
			// 元の宅内機器が存在しない場合、工事案件番号のみ値を持つデータを設定する
			if (false == takniKikiSonzaiFlg)
			{
				returnList.add(msgKU0141);
			}
		}
		
		return returnList;
	}

	/**
	 * 変更対象取得＿サービス契約
	 * @param list 工事案件番号
	 * @return List<CAANMsg>
	 * @throws CAANException 
	 */
	private List<CAANMsg> getChangeDataMapKU0081(List<String> list) throws CAANException
	{
		List<CAANMsg> returnList = new ArrayList<CAANMsg>();
		
		// 引数の工事案件番号の件数分、サービス契約を取得する。
		for (String kojiakNo : list)
		{
			//
			KU0081LE leKU0081 = new KU0081LE();
			
			// サービス契約のETメッセージを作成
			CAANMsg msgKU0081 = new CAANMsg(KU0081ETMsg.class.getName());
			
			// 工事案件番号
			msgKU0081.set(KU0081ETMsg.KOJIAK_NO, kojiakNo);
			// 無効フラグ
			msgKU0081.set(KU0081ETMsg.MK_FLG, JKUStrConst.MK_FLG_YUKO);
			
			// 更新対象のレコード取得
			CAANMsg[] arrMsgKU0081 = leKU0081.findByCondition(msgKU0081);
			
			if(arrMsgKU0081 != null)
			{
				for (CAANMsg msg : arrMsgKU0081) {
					returnList.add(msg);
				}
			}
		}
		
		return returnList;
	}
	

	
	/**
	 * 契約者情報変更
	 * @param changeKokyakuDataMap 変更対象情報<スキーマ名, 変更対象のレコードリスト>
	 * @param inCBSMsg サービスインターフェイスの入力電文
	 * @return	更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private List<String> updateKokyakuData(HashMap<String, List<CAANMsg>> changeKokyakuDataMap, CAANMsg inCBSMsg) throws CAANException
	{
		// 配列の格納順にスキーマを更新する。
		String[] arrSchema = {JKUStrConst.SCHEMA_KU0101, JKUStrConst.SCHEMA_KU0081, JKUStrConst.SCHEMA_KU0011};
		// 更新済み工事案件番号
		List<String> kojiakNoList = new ArrayList<String>();
		
		for (String schema : arrSchema)
		{
			if (changeKokyakuDataMap.containsKey(schema))
			{
				for (CAANMsg msg : changeKokyakuDataMap.get(schema))
				{
					if(JKUStrConst.SCHEMA_KU0011.equals(schema))
					{
						updateKokyakuKU0011(msg, inCBSMsg, kojiakNoList);
					}
					if(JKUStrConst.SCHEMA_KU0101.equals(schema))
					{
						updateKokyakuKU0101(msg, inCBSMsg, kojiakNoList);
					}
					if(JKUStrConst.SCHEMA_KU0081.equals(schema))
					{
						updateKokyakuKU0081(msg, inCBSMsg, kojiakNoList);
					}
				}
			}
		}
		
		return kojiakNoList;
	}
	
	/**
	 * サービス契約情報変更
	 * @param changeSvcDataMap 変更対象情報<スキーマ名, 変更対象のレコードリスト>
	 * @param inCBSMsg サービスインターフェイスの入力電文
	 * @return	更新を実行した工事案件番号のリスト
	 * @throws CAANException 
	 */
	private List<String> updateSvcData(HashMap<String, List<CAANMsg>> changeSvcDataMap, CAANMsg inCBSMsg) throws CAANException
	{
		// 配列の格納順にスキーマを更新する。
		String[] arrSchema = {JKUStrConst.SCHEMA_KU0081, JKUStrConst.SCHEMA_KU0101, JKUStrConst.SCHEMA_KU0011};
		// 更新済み工事案件番号
		List<String> kojiakNoList = new ArrayList<String>();
		
		for (String schema : arrSchema)
		{
			if (changeSvcDataMap.containsKey(schema))
			{
				for (CAANMsg msg : changeSvcDataMap.get(schema))
				{
					if(JKUStrConst.SCHEMA_KU0011.equals(schema))
					{
						updateSvcKU0011(msg, inCBSMsg, kojiakNoList);
					}
					if(JKUStrConst.SCHEMA_KU0081.equals(schema))
					{
						updateSvcKU0081(msg, inCBSMsg, kojiakNoList);
					}
					if(JKUStrConst.SCHEMA_KU0101.equals(schema))
					{
						updateSvcKU0101(msg, inCBSMsg, kojiakNoList);
					}
				}
			}
		}
		
		return kojiakNoList;
	}
	
	/**
	 * 回線情報変更
	 * @param changeKaisenDataMap 変更対象情報<スキーマ名, 変更対象のレコードリスト>
	 * @param inCBSMsg サービスインターフェイスの入力電文
	 * @return	更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private List<String> updateKaisenData(HashMap<String, List<CAANMsg>> changeKaisenDataMap, CAANMsg inCBSMsg) throws CAANException
	{
		// 配列の格納順にスキーマを更新する。
		String[] arrSchema = {JKUStrConst.SCHEMA_KU0041, JKUStrConst.SCHEMA_KU0021, 
				JKUStrConst.SCHEMA_KU0061, JKUStrConst.SCHEMA_KU0101, JKUStrConst.SCHEMA_KU0011};
		// 更新済み工事案件番号
		List<String> kojiakNoList = new ArrayList<String>();
		// チェックフラグ
		boolean checkFlg = true;
		
		for (String schema : arrSchema)
		{
			if (changeKaisenDataMap.containsKey(schema))
			{
				for (CAANMsg msg : changeKaisenDataMap.get(schema))
				{
					if(JKUStrConst.SCHEMA_KU0011.equals(schema))
					{
						checkFlg = updateKaisenKU0011(msg, inCBSMsg, kojiakNoList);
					}
					if(JKUStrConst.SCHEMA_KU0021.equals(schema))
					{
						updateKaisenKU0021(msg, inCBSMsg, kojiakNoList);
					}
					if(JKUStrConst.SCHEMA_KU0041.equals(schema))
					{
						updateKaisenKU0041(msg, inCBSMsg, kojiakNoList);
					}
					if(JKUStrConst.SCHEMA_KU0061.equals(schema))
					{
						updateKaisenKU0061(msg, inCBSMsg, kojiakNoList);
					}
					if(JKUStrConst.SCHEMA_KU0101.equals(schema))
					{
						checkFlg = updateKaisenKU0101(msg, inCBSMsg, kojiakNoList);
					}
					if(!checkFlg)
					{
						return null;
					}
				}
			}
		}
		return kojiakNoList;
	}
	
	/**
	 * 工事情報変更
	 * @param changeKojiDataMap 変更対象情報<スキーマ名, 変更対象のレコードリスト>
	 * @param inCBSMsg サービスインターフェイスの入力電文
	 * @return	更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private List<String> updateKojiData(HashMap<String, List<CAANMsg>> changeKojiDataMap, CAANMsg inCBSMsg) throws CAANException
	{
		// 配列の格納順にスキーマを更新する。
		String[] arrSchema = {JKUStrConst.SCHEMA_KU0041, JKUStrConst.SCHEMA_KU0011};
		// 更新済み工事案件番号
		List<String> kojiakNoList = new ArrayList<String>();
		
		for (String schema : arrSchema)
		{
			if (changeKojiDataMap.containsKey(schema))
			{
				for (CAANMsg msg : changeKojiDataMap.get(schema))
				{
					if(JKUStrConst.SCHEMA_KU0011.equals(schema))
					{
						updateKojiKU0011(msg, inCBSMsg, kojiakNoList);
					}
					if(JKUStrConst.SCHEMA_KU0041.equals(schema))
					{
						updateKojiKU0041(msg, inCBSMsg, kojiakNoList);
					}
				}
			}
		}
		
		return kojiakNoList;
	}
	
	/**
	 * 機器情報変更
	 * @param changeDataMap 変更対象情報<スキーマ名, 変更対象のレコードリスト>
	 * @param inCBSMsg サービスインターフェイスの入力電文
	 * @return	更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private List<String> updateKikiData(HashMap<String, List<CAANMsg>> changeDataMap, CAANMsg inCBSMsg) throws CAANException
	{
		// 配列の格納順にスキーマを更新する
		String[] arrSchema = {JKUStrConst.SCHEMA_KU0141, JKUStrConst.SCHEMA_KU0041, JKUStrConst.SCHEMA_KU0011};
		// 更新済み工事案件番号
		List<String> kojiakNoList = new ArrayList<String>();
		
		for (String schema : arrSchema)
		{
			if(changeDataMap.containsKey(schema))
			{
				for (CAANMsg msg : changeDataMap.get(schema))
				{
					if (JKUStrConst.SCHEMA_KU0011.equals(schema))
					{
						updateKikiKU0011(msg, inCBSMsg, kojiakNoList);
					}
					if (JKUStrConst.SCHEMA_KU0041.equals(schema))
					{
						updateKikiKU0041(msg, inCBSMsg, kojiakNoList);
					}
				}
				if (JKUStrConst.SCHEMA_KU0141.equals(schema))
				{
					updateKikiKU0141(changeDataMap.get(schema), inCBSMsg, kojiakNoList);
				}
			}
		}
		
		return kojiakNoList;
	}
	
	/**
	 * 請求先情報変更
	 * @param changeDataMap 変更対象情報<スキーマ名, 変更対象のレコードリスト>
	 * @param inCBSMsg サービスインターフェイスの入力電文
	 * @return	更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private List<String> updateSeikyuSaki(HashMap<String, List<CAANMsg>> changeDataMap, CAANMsg inCBSMsg) throws CAANException
	{
		// 配列の格納順にスキーマを更新する
		String[] arrSchema = {JKUStrConst.SCHEMA_KU0011};
		// 更新済み工事案件番号
		List<String> kojiakNoList = new ArrayList<String>();
		
		for (String schema : arrSchema)
		{
			if (changeDataMap.containsKey(schema))
			{
				for (CAANMsg msg : changeDataMap.get(schema))
				{
					if (JKUStrConst.SCHEMA_KU0011.equals(schema))
					{
						updateSeikyuSakiKU0011(msg, inCBSMsg, kojiakNoList);
					}
				}
			}
		}
		
		return kojiakNoList;
	}
	
	/**
	 * 契約者情報変更＿工事案件
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateKokyakuKU0011(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// ---FCDS変更連携要否更新有無
		
		List<String[]> fcdsCheckList = new ArrayList<String[]>();
		// お客様名
		fcdsCheckList.add(new String[] {KU0011ETMsg.CUST_NM, EKU0041C010CBSMsg.CUST_NM, null});
		
		boolean fcdsCheckResult = JKUModelCommon.checkRnkiSysFlgUpd(changeDataMsg, inCBSMsg, fcdsCheckList);
		
		// ---Genesis変更連携要否更新有無
		
		List<String[]> genesisCheckList = new ArrayList<String[]>();
		// SYSID【比較対象】
		genesisCheckList.add(new String[] {KU0011ETMsg.SYSID, EKU0041C010CBSMsg.SYSID, null});
		// お客様名【比較対象】
		genesisCheckList.add(new String[] {KU0011ETMsg.CUST_NM, EKU0041C010CBSMsg.CUST_NM, null});
		// お客様カナ名【比較対象】
		genesisCheckList.add(new String[] {KU0011ETMsg.CUST_KANA, EKU0041C010CBSMsg.CUST_KANA, null});
		// お客様自宅電話番号【比較対象】
		genesisCheckList.add(new String[] {KU0011ETMsg.CUST_HOME_TELNO, EKU0041C010CBSMsg.CUST_HOME_TEL_NO, null});
		// お客様携帯電話番号【比較対象】
		genesisCheckList.add(new String[] {KU0011ETMsg.CUST_KTAI_TELNO, EKU0041C010CBSMsg.CUST_KTAI_TEL_NO, null});
		// お客様連絡先電話番号【比較対象】
		genesisCheckList.add(new String[] {KU0011ETMsg.CUST_RRKS_TELNO, EKU0041C010CBSMsg.CUST_RRKS_TEL_NO, null});
		
		boolean genesisCheckResult = JKUModelCommon.checkRnkiSysFlgUpd(changeDataMsg, inCBSMsg, genesisCheckList);
		
		// ---工事案件を更新する
		
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// SYSID
		taishoList.add(new String[] {KU0011ETMsg.SYSID, EKU0041C010CBSMsg.SYSID, null});

		// お客様名
		taishoList.add(new String[] {KU0011ETMsg.CUST_NM, EKU0041C010CBSMsg.CUST_NM, null});
		// お客様カナ名
		taishoList.add(new String[] {KU0011ETMsg.CUST_KANA, EKU0041C010CBSMsg.CUST_KANA, null});
		// お客様自宅電話番号
		taishoList.add(new String[] {KU0011ETMsg.CUST_HOME_TELNO, EKU0041C010CBSMsg.CUST_HOME_TEL_NO, null});
		// お客様携帯電話番号
		taishoList.add(new String[] {KU0011ETMsg.CUST_KTAI_TELNO, EKU0041C010CBSMsg.CUST_KTAI_TEL_NO, null});
		// お客様連絡先電話番号
		taishoList.add(new String[] {KU0011ETMsg.CUST_RRKS_TELNO, EKU0041C010CBSMsg.CUST_RRKS_TEL_NO, null});
		// 連絡先勤務先名
		taishoList.add(new String[] {KU0011ETMsg.RRKS_OFFC_NM, EKU0041C010CBSMsg.RRKS_OFFC_NM, null});
		// 契約者住所コード
		taishoList.add(new String[] {KU0011ETMsg.KEISHA_AD_CD, EKU0041C010CBSMsg.KEISHA_AD_CD, null});
		// 契約者郵便番号
		taishoList.add(new String[] {KU0011ETMsg.KEISHA_PCD, EKU0041C010CBSMsg.KEISHA_PCD, null});
		// 契約者都道府県名
		taishoList.add(new String[] {KU0011ETMsg.KEISHA_STATE_NM, EKU0041C010CBSMsg.KEISHA_STATE_NM, null});
		// 契約者市区町村名
		taishoList.add(new String[] {KU0011ETMsg.KEISHA_CITY_NM, EKU0041C010CBSMsg.KEISHA_CITY_NM, null});
		// 契約者大字通称名
		taishoList.add(new String[] {KU0011ETMsg.KEISHA_OAZTSU_NM, EKU0041C010CBSMsg.KEISHA_OAZTSU_NM, null});
		// 契約者字丁目名
		taishoList.add(new String[] {KU0011ETMsg.KEISHA_AZCHO_NM, EKU0041C010CBSMsg.KEISHA_AZCHO_NM, null});
		// 契約者住所番地号
		taishoList.add(new String[] {KU0011ETMsg.KEISHA_AD_BNCHIGO, EKU0041C010CBSMsg.KEISHA_AD_BNCHIGO, null});
		// 契約者住所補記・建物名
		taishoList.add(new String[] {KU0011ETMsg.KEISHA_ADRTTM, EKU0041C010CBSMsg.KEISHA_ADRTTM, null});
		// 契約者住所補記・部屋番号
		taishoList.add(new String[] {KU0011ETMsg.KEISHA_ADRRM, EKU0041C010CBSMsg.KEISHA_ADRRM, null});
		// 契約者住所手動入力フラグ 
		taishoList.add(new String[] {KU0011ETMsg.KEISHA_AD_MAN_INPUT_FLG, EKU0041C010CBSMsg.KEISHA_AD_MAN_INPUT_FLG, null});
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList) || -1 != kojiakNoList.indexOf(changeDataMsg.getString(KU0011ETMsg.KOJIAK_NO)))
		{
			// OPMS変更連携要否('要'　工事案件ステータスが｢受付済み｣以外の場合のみ)
			if(!JKUStrConst.CD00474_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT)))
			{
				changeDataMsg.set(KU0011ETMsg.OPMS_CHGE_RNKI_YH, JKUStrConst.KH_PSG);
			}
			
			// FCDS変更連携要否('要'　工事案件ステータスが「受付済」以外かつ、FCDS項目に変更があった場合)
			if (false == JKUStrConst.CD00474_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT))
					&& true == fcdsCheckResult)
			{
				changeDataMsg.set(KU0011ETMsg.FCDS_CHGE_RNKI_YH, JKUModelCommon.getChgRnkiYh(changeDataMsg, JKUStrConst.RNKI_SYSTEM_FCDS));
			}
			
			// Genesis変更連携要否('要'　工事案件ステータスが「受付済」以外かつ、Genesis項目に変更があった場合)
			if (false == JKUStrConst.CD00474_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT))
					&& true == genesisCheckResult)
			{
				changeDataMsg.set(KU0011ETMsg.GENESIS_CHGE_RNKI_YH, JKUModelCommon.getChgRnkiYh(changeDataMsg, JKUStrConst.RNKI_SYSTEM_GENESIS));
			}

			// 更新年月日時分秒
			changeDataMsg.set(KU0011ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0011ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0011SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0011ETMsg.KOJIAK_NO));
		}
		
	}

	/**
	 * 契約者情報変更＿先行設計
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateKokyakuKU0101(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// 先行設計を更新する
		JKUejbKU0101SecProc ku0101SecProc = new JKUejbKU0101SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// SYSID
		taishoList.add(new String[] {KU0101ETMsg.SYSID, EKU0041C010CBSMsg.SYSID, null});
		// お客様名
		taishoList.add(new String[] {KU0101ETMsg.CUST_NM, EKU0041C010CBSMsg.CUST_NM, null});
		// お客様カナ名
		taishoList.add(new String[] {KU0101ETMsg.CUST_KANA, EKU0041C010CBSMsg.CUST_KANA, null});
		// お客様連絡先電話番号(お客様自宅電話番号)
		taishoList.add(new String[] {KU0101ETMsg.CUST_RRKS_TELNO, EKU0041C010CBSMsg.CUST_HOME_TEL_NO, null});
		// お客様連絡先携帯電話番号(お客様携帯電話番号)
		taishoList.add(new String[] {KU0101ETMsg.CUST_RRKS_KTAI_TELNO, EKU0041C010CBSMsg.CUST_KTAI_TEL_NO, null});

		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList))
		{
			// 更新年月日時分秒
			changeDataMsg.set(KU0101ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0101ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0101SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0101ETMsg.KOJIAK_NO));
		}
	}

	/**
	 * 契約者情報変更＿サービス契約
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateKokyakuKU0081(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// サービス契約_工事案件を更新する
		JKUejbKU0081SecProc ku0081SecProc = new JKUejbKU0081SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// SYSID
		taishoList.add(new String[] {KU0081ETMsg.SYSID, EKU0041C010CBSMsg.SYSID, null});
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList))
		{
			// 更新年月日時分秒
			changeDataMsg.set(KU0081ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0081ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0081SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0081ETMsg.KOJIAK_NO));
		}
	}

	/**
	 * サービス契約情報変更＿工事案件
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @param change0011StatusList 面開発工事コードが0から1に変更された工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateSvcKU0011(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList)
		throws CAANException
	{
		// 工事案件を更新する
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
//OM-2018-0001119 ADD START
		//FCDS変更連携要否更新有無
		boolean fcdsCheckResult = false;
		//Genesis変更連携要否更新有無
		boolean genesisCheckResult = false;
//OM-2018-0001119 ADD END
		
		// インプットSYSID
		String inputSysid = inCBSMsg.getString(EKU0041C010CBSMsg.SYSID);
		
		// SYSID
		taishoList.add(new String[] {KU0011ETMsg.SYSID, EKU0041C010CBSMsg.SYSID, null});
		// 関西電力お客様情報授受同意有無
		taishoList.add(new String[] {KU0011ETMsg.KEPCO_CUSTINFO_JUJU_DOI_UM, EKU0041C010CBSMsg.KEPCO_CTINFO_JUJU_DOI_UM, null});
		
		// スキーマのSYSIDとインプットのSYSIDに差異があった場合はお客様情報を設定しなおす
		if(!changeDataMsg.getString(KU0011ETMsg.SYSID).equals(inputSysid))
		{
			// お客様情報を取得
			HashMap<String, String> custMap = JKUModelCommon.getCustInfo(inputSysid);
			
			// お客様情報が取得できない場合
			if(null == custMap)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.SYSID_ERR, "EK");
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
				return;
			}
			
			// インプットのサービスインターフェイスにセット
			// お客様名
			inCBSMsg.set(EKU0041C010CBSMsg.CUST_NM, custMap.get(CK0011ETMsg.CUST_NM));
			// お客様カナ名
			inCBSMsg.set(EKU0041C010CBSMsg.CUST_KANA, custMap.get(CK0011ETMsg.CUST_KANA));
			// お客様携帯電話番号
			inCBSMsg.set(EKU0041C010CBSMsg.CUST_KTAI_TEL_NO, custMap.get(KU0011ETMsg.CUST_KTAI_TELNO));
			// お客様連絡先電話番号
			inCBSMsg.set(EKU0041C010CBSMsg.CUST_RRKS_TEL_NO, custMap.get(CK0011ETMsg.KEISHA_TELNO));
			// 契約者住所コード
			inCBSMsg.set(EKU0041C010CBSMsg.KEISHA_AD_CD, custMap.get(CK0011ETMsg.KEISHA_AD_CD));
			// 契約者郵便番号
			inCBSMsg.set(EKU0041C010CBSMsg.KEISHA_PCD, custMap.get(CK0011ETMsg.KEISHA_PCD));
			// 契約者都道府県名
			inCBSMsg.set(EKU0041C010CBSMsg.KEISHA_STATE_NM, custMap.get(CK0011ETMsg.KEISHA_STATE_NM));
			// 契約者市区町村名
			inCBSMsg.set(EKU0041C010CBSMsg.KEISHA_CITY_NM, custMap.get(CK0011ETMsg.KEISHA_CITY_NM));
			// 契約者大字通称名
			inCBSMsg.set(EKU0041C010CBSMsg.KEISHA_OAZTSU_NM, custMap.get(CK0011ETMsg.KEISHA_OAZTSU_NM));
			// 契約者字丁目名
			inCBSMsg.set(EKU0041C010CBSMsg.KEISHA_AZCHO_NM, custMap.get(CK0011ETMsg.KEISHA_AZCHO_NM));
			// 契約者住所番地号
			inCBSMsg.set(EKU0041C010CBSMsg.KEISHA_AD_BNCHIGO, custMap.get(CK0011ETMsg.KEISHA_BNCHIGO));
			// 契約者住所補記・建物名
			inCBSMsg.set(EKU0041C010CBSMsg.KEISHA_ADRTTM, custMap.get(CK0011ETMsg.KEISHA_ADRTTM));
			// 契約者住所補記・部屋番号
			inCBSMsg.set(EKU0041C010CBSMsg.KEISHA_ADRRM, custMap.get(CK0011ETMsg.KEISHA_ADRRM));
			// 契約者住所手動入力フラグ
			inCBSMsg.set(EKU0041C010CBSMsg.KEISHA_AD_MAN_INPUT_FLG, custMap.get(CK0011ETMsg.KEISHA_AD_MAN_INPUT_FLG));
			
			// 対象リストにセット
			// お客様名
			taishoList.add(new String[] {KU0011ETMsg.CUST_NM, EKU0041C010CBSMsg.CUST_NM, null});
			// お客様カナ名
			taishoList.add(new String[] {KU0011ETMsg.CUST_KANA, EKU0041C010CBSMsg.CUST_KANA, null});
			// お客様携帯電話番号
			taishoList.add(new String[] {KU0011ETMsg.CUST_KTAI_TELNO, EKU0041C010CBSMsg.CUST_KTAI_TEL_NO, null});
			// お客様連絡先電話番号
			taishoList.add(new String[] {KU0011ETMsg.CUST_RRKS_TELNO, EKU0041C010CBSMsg.CUST_RRKS_TEL_NO, null});
			// 契約者住所コード
			taishoList.add(new String[] {KU0011ETMsg.KEISHA_AD_CD, EKU0041C010CBSMsg.KEISHA_AD_CD, null});
			// 契約者郵便番号
			taishoList.add(new String[] {KU0011ETMsg.KEISHA_PCD, EKU0041C010CBSMsg.KEISHA_PCD, null});
			// 契約者都道府県名
			taishoList.add(new String[] {KU0011ETMsg.KEISHA_STATE_NM, EKU0041C010CBSMsg.KEISHA_STATE_NM, null});
			// 契約者市区町村名
			taishoList.add(new String[] {KU0011ETMsg.KEISHA_CITY_NM, EKU0041C010CBSMsg.KEISHA_CITY_NM, null});
			// 契約者大字通称名
			taishoList.add(new String[] {KU0011ETMsg.KEISHA_OAZTSU_NM, EKU0041C010CBSMsg.KEISHA_OAZTSU_NM, null});
			// 契約者字丁目名
			taishoList.add(new String[] {KU0011ETMsg.KEISHA_AZCHO_NM, EKU0041C010CBSMsg.KEISHA_AZCHO_NM, null});
			// 契約者住所番地号
			taishoList.add(new String[] {KU0011ETMsg.KEISHA_AD_BNCHIGO, EKU0041C010CBSMsg.KEISHA_AD_BNCHIGO, null});
			// 契約者住所補記・建物名
			taishoList.add(new String[] {KU0011ETMsg.KEISHA_ADRTTM, EKU0041C010CBSMsg.KEISHA_ADRTTM, null});
			// 契約者住所補記・部屋番号
			taishoList.add(new String[] {KU0011ETMsg.KEISHA_ADRRM, EKU0041C010CBSMsg.KEISHA_ADRRM, null});
			// 契約者住所手動入力フラグ
			taishoList.add(new String[] {KU0011ETMsg.KEISHA_AD_MAN_INPUT_FLG, EKU0041C010CBSMsg.KEISHA_AD_MAN_INPUT_FLG, null});
			
//OM-2018-0001119 ADD START
			// ---FCDS変更連携要否更新有無
			
			List<String[]> fcdsCheckList = new ArrayList<String[]>();
			// お客様名
			fcdsCheckList.add(new String[] {KU0011ETMsg.CUST_NM, EKU0041C010CBSMsg.CUST_NM, null});
			
			fcdsCheckResult = JKUModelCommon.checkRnkiSysFlgUpd(changeDataMsg, inCBSMsg, fcdsCheckList);
			
			// ---Genesis変更連携要否更新有無
			
			List<String[]> genesisCheckList = new ArrayList<String[]>();
			// SYSID【比較対象】
			genesisCheckList.add(new String[] {KU0011ETMsg.SYSID, EKU0041C010CBSMsg.SYSID, null});
			// お客様名【比較対象】
			genesisCheckList.add(new String[] {KU0011ETMsg.CUST_NM, EKU0041C010CBSMsg.CUST_NM, null});
			// お客様カナ名【比較対象】
			genesisCheckList.add(new String[] {KU0011ETMsg.CUST_KANA, EKU0041C010CBSMsg.CUST_KANA, null});
			// お客様携帯電話番号【比較対象】
			genesisCheckList.add(new String[] {KU0011ETMsg.CUST_KTAI_TELNO, EKU0041C010CBSMsg.CUST_KTAI_TEL_NO, null});
			// お客様連絡先電話番号【比較対象】
			genesisCheckList.add(new String[] {KU0011ETMsg.CUST_RRKS_TELNO, EKU0041C010CBSMsg.CUST_RRKS_TEL_NO, null});
			
			genesisCheckResult = JKUModelCommon.checkRnkiSysFlgUpd(changeDataMsg, inCBSMsg, genesisCheckList);
//OM-2018-0001119 ADD END
		}
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList) || -1 != kojiakNoList.indexOf(changeDataMsg.getString(KU0011ETMsg.KOJIAK_NO)))
		{
			// OPMS変更連携要否('要'　工事案件ステータスが｢受付済み｣以外の場合のみ)
			if(!JKUStrConst.CD00474_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT)))
			{
				changeDataMsg.set(KU0011ETMsg.OPMS_CHGE_RNKI_YH, JKUStrConst.KH_PSG);
			}
			
//OM-2018-0001119 ADD START
			// FCDS変更連携要否('要'　工事案件ステータスが「受付済」以外かつ、FCDS項目に変更があった場合)
			if (false == JKUStrConst.CD00474_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT))
					&& true == fcdsCheckResult)
			{
				changeDataMsg.set(KU0011ETMsg.FCDS_CHGE_RNKI_YH, JKUModelCommon.getChgRnkiYh(changeDataMsg, JKUStrConst.RNKI_SYSTEM_FCDS));
			}
			
			// Genesis変更連携要否('要'　工事案件ステータスが「受付済」以外かつ、Genesis項目に変更があった場合)
			if (false == JKUStrConst.CD00474_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT))
					&& true == genesisCheckResult)
			{
				changeDataMsg.set(KU0011ETMsg.GENESIS_CHGE_RNKI_YH, JKUModelCommon.getChgRnkiYh(changeDataMsg, JKUStrConst.RNKI_SYSTEM_GENESIS));
			}
//OM-2018-0001119 ADD END
			
			// 更新年月日時分秒
			changeDataMsg.set(KU0011ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0011ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0011SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0011ETMsg.KOJIAK_NO));
		}
	}
	
	/**
	 * サービス契約情報変更＿サービス契約
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateSvcKU0081(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// サービス契約_工事案件を更新する
		JKUejbKU0081SecProc ku0081SecProc = new JKUejbKU0081SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// SYSID
		taishoList.add(new String[] {KU0081ETMsg.SYSID, EKU0041C010CBSMsg.SYSID, null});
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList))
		{
			// 更新年月日時分秒
			changeDataMsg.set(KU0081ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0081ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0081SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0081ETMsg.KOJIAK_NO));
		}
	}

	/**
	 * サービス契約情報変更＿先行設計
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateSvcKU0101(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// 先行設計を更新する
		JKUejbKU0101SecProc ku0101SecProc = new JKUejbKU0101SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// SYSID
		taishoList.add(new String[] {KU0101ETMsg.SYSID, EKU0041C010CBSMsg.SYSID, null});
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList))
		{
			// 更新年月日時分秒
			changeDataMsg.set(KU0101ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0101ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0101SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0101ETMsg.KOJIAK_NO));
		}
	}
	
	/**
	 * 回線情報変更＿工事案件
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @return boolean
	 * @throws CAANException
	 */
	private boolean updateKaisenKU0011(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// 更新対象の工事案件が住変系かどうか
		boolean adChgeFlg = JKUModelCommon.isAdChgeAk(changeDataMsg.getString(KU0011ETMsg.KOJIAK_SBT_CD));
		
		// 工事案件種別コードを取得する
		String kojiakSbtCd = changeDataMsg.getString(KU0011ETMsg.KOJIAK_SBT_CD);
		
		// 転宅先住所コードの取得
		String tentakuSakiAdCd = inCBSMsg.getString(EKU0041C010CBSMsg.TENTAKU_SAKI_AD_CD);
		// 転宅前住所コードの取得
		String tentakubfAdCd = inCBSMsg.getString(EKU0041C010CBSMsg.TENTAKU_BF_AD_CD);
		// 設置場所住所コードの取得
		String setplaceAdCd = inCBSMsg.getString(EKU0041C010CBSMsg.SETPLACE_AD_CD);
		
		// ---FCDS変更連携要否更新有無
		
		List<String[]> fcdsCheckList = new ArrayList<String[]>();
		
		if(adChgeFlg)
		{
			// 住所変更(新設)の場合
			if(JKUStrConst.CD00577_AD_CHG_NEWESTA.equals(kojiakSbtCd))
			{
				// 転宅先住所コードがnullでない場合、転宅先住所を設定する
				if(!"".equals(tentakuSakiAdCd) && tentakuSakiAdCd != null)
				{
					// 転宅先住所コード
					fcdsCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_CD, EKU0041C010CBSMsg.TENTAKU_SAKI_AD_CD, null});
					// 転宅先住所補記・建物名
					fcdsCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRTTM, EKU0041C010CBSMsg.TENTAKU_SAKI_ADRTTM, null});
				}
				// 転宅先住所コードがnull且つ設置場所住所コードが設定されている場合、設置場所住所を設定する
				else if(!"".equals(setplaceAdCd) && setplaceAdCd != null)
				{
					// 転宅先住所コード(設置場所住所コード)
					fcdsCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_CD, EKU0041C010CBSMsg.SETPLACE_AD_CD, null});
					// 転宅先住所補記・建物名(設置場所住所補記・建物名)
					fcdsCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRTTM, EKU0041C010CBSMsg.SETPLACE_ADRTTM, null});
				}
			}
			// ※004:住所変更(撤去)の場合は、何もしない
		}
		else
		{
			// 設置場所住所コードが設定されている場合、設置場所住所を設定する
			if(!"".equals(setplaceAdCd) && setplaceAdCd != null)
			{
				// 転宅先住所コード(設置場所住所コード)
				fcdsCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_CD, EKU0041C010CBSMsg.SETPLACE_AD_CD, null});
				// 転宅先住所補記・建物名(設置場所住所補記・建物名)
				fcdsCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRTTM, EKU0041C010CBSMsg.SETPLACE_ADRTTM, null});
			}
			// 設置場所住所コードがnull且つ転宅先住所コードが設定されている場合、転宅先住所を設定する
			else if(!"".equals(tentakuSakiAdCd) && tentakuSakiAdCd != null)
			{
				// 転宅先住所コード
				fcdsCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_CD, EKU0041C010CBSMsg.TENTAKU_SAKI_AD_CD, null});
				// 転宅先住所補記・建物名
				fcdsCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRTTM, EKU0041C010CBSMsg.TENTAKU_SAKI_ADRTTM, null});
			}
		}
		
		boolean fcdsCheckResult = JKUModelCommon.checkRnkiSysFlgUpd(changeDataMsg, inCBSMsg, fcdsCheckList);
		
		// ---Genesis変更連携要否更新有無
		
		List<String[]> genesisCheckList = new ArrayList<String[]>();
		
		if(adChgeFlg)
		{
			// 住所変更(新設)の場合
			if(JKUStrConst.CD00577_AD_CHG_NEWESTA.equals(kojiakSbtCd))
			{
				// 転宅先住所コードがnullでない場合、転宅先住所を設定する
				if(!"".equals(tentakuSakiAdCd) && tentakuSakiAdCd != null)
				{
					// 転宅先住所コード
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_CD, EKU0041C010CBSMsg.TENTAKU_SAKI_AD_CD, null});
					// 転宅先郵便番号
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_PCD, EKU0041C010CBSMsg.TENTAKU_SAKI_PCD, null});
					// 転宅先都道府県名
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_STATE_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_STATE_NM, null});
					// 転宅先市区町村名
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_CITY_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_CITY_NM, null});
					// 転宅先大字通称名
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_OAZTSU_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_OAZTSU_NM, null});
					// 転宅先字丁目名
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AZCHO_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_AZCHO_NM, null});
					// 転宅先住所番地号
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_BNCHIGO, EKU0041C010CBSMsg.TENTAKU_SAKI_AD_BNCHIGO, null});
					// 転宅先住所補記・建物名
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRTTM, EKU0041C010CBSMsg.TENTAKU_SAKI_ADRTTM, null});
					// 転宅先住所補記・部屋番号
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRRM, EKU0041C010CBSMsg.TENTAKU_SAKI_ADRRM, null});
				}
				// 転宅先住所コードがnull且つ設置場所住所コードが設定されている場合、設置場所住所を設定する
				else if(!"".equals(setplaceAdCd) && setplaceAdCd != null)
				{
					// 転宅先住所コード(設置場所住所コード)
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_CD, EKU0041C010CBSMsg.SETPLACE_AD_CD, null});
					// 転宅先郵便番号(設置場所郵便番号)
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_PCD, EKU0041C010CBSMsg.SETPLACE_PCD, null});
					// 転宅先都道府県名(設置場所都道府県名)
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_STATE_NM, EKU0041C010CBSMsg.SETPLACE_STATE_NM, null});
					// 転宅先市区町村名(設置場所市区町村名)
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_CITY_NM, EKU0041C010CBSMsg.SETPLACE_CITY_NM, null});
					// 転宅先大字通称名(設置場所大字通称名)
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_OAZTSU_NM, EKU0041C010CBSMsg.SETPLACE_OAZTSU_NM, null});
					// 転宅先字丁目名(設置場所字丁目名)
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AZCHO_NM, EKU0041C010CBSMsg.SETPLACE_AZCHO_NM, null});
					// 転宅先住所番地号(設置場所住所番地号)
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_BNCHIGO, EKU0041C010CBSMsg.SETPLACE_AD_BNCHIGO, null});
					// 転宅先住所補記・建物名(設置場所住所補記・建物名)
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRTTM, EKU0041C010CBSMsg.SETPLACE_ADRTTM, null});
					// 転宅先住所補記・部屋番号(設置場所住所補記・部屋番号)
					genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRRM, EKU0041C010CBSMsg.SETPLACE_ADRRM, null});
				}
			}
			// ※004:住所変更(撤去)の場合は、何もしない
		}
		else
		{
			// 設置場所住所コードが設定されている場合、設置場所住所を設定する
			if(!"".equals(setplaceAdCd) && setplaceAdCd != null)
			{
				// 転宅先住所コード(設置場所住所コード)
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_CD, EKU0041C010CBSMsg.SETPLACE_AD_CD, null});
				// 転宅先郵便番号(設置場所郵便番号)
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_PCD, EKU0041C010CBSMsg.SETPLACE_PCD, null});
				// 転宅先都道府県名(設置場所都道府県名)
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_STATE_NM, EKU0041C010CBSMsg.SETPLACE_STATE_NM, null});
				// 転宅先市区町村名(設置場所市区町村名)
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_CITY_NM, EKU0041C010CBSMsg.SETPLACE_CITY_NM, null});
				// 転宅先大字通称名(設置場所大字通称名)
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_OAZTSU_NM, EKU0041C010CBSMsg.SETPLACE_OAZTSU_NM, null});
				// 転宅先字丁目名(設置場所字丁目名)
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AZCHO_NM, EKU0041C010CBSMsg.SETPLACE_AZCHO_NM, null});
				// 転宅先住所番地号(設置場所住所番地号)
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_BNCHIGO, EKU0041C010CBSMsg.SETPLACE_AD_BNCHIGO, null});
				// 転宅先住所補記・建物名(設置場所住所補記・建物名)
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRTTM, EKU0041C010CBSMsg.SETPLACE_ADRTTM, null});
				// 転宅先住所補記・部屋番号(設置場所住所補記・部屋番号)
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRRM, EKU0041C010CBSMsg.SETPLACE_ADRRM, null});
			}
			// 設置場所住所コードがnull且つ転宅先住所コードが設定されている場合、転宅先住所を設定する
			else if(!"".equals(tentakuSakiAdCd) && tentakuSakiAdCd != null)
			{
				// 転宅先住所コード
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_CD, EKU0041C010CBSMsg.TENTAKU_SAKI_AD_CD, null});
				// 転宅先郵便番号
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_PCD, EKU0041C010CBSMsg.TENTAKU_SAKI_PCD, null});
				// 転宅先都道府県名
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_STATE_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_STATE_NM, null});
				// 転宅先市区町村名
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_CITY_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_CITY_NM, null});
				// 転宅先大字通称名
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_OAZTSU_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_OAZTSU_NM, null});
				// 転宅先字丁目名
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AZCHO_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_AZCHO_NM, null});
				// 転宅先住所番地号
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_BNCHIGO, EKU0041C010CBSMsg.TENTAKU_SAKI_AD_BNCHIGO, null});
				// 転宅先住所補記・建物名
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRTTM, EKU0041C010CBSMsg.TENTAKU_SAKI_ADRTTM, null});
				// 転宅先住所補記・部屋番号
				genesisCheckList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRRM, EKU0041C010CBSMsg.TENTAKU_SAKI_ADRRM, null});
			}
		}
		
		// 工事案件種別が「000：強制解約」「002：撤去(解約)」「004：住変(撤去)」
		// 「006：eo光電話宅内工事」「007：移設」「009：プラン変更（収容替）」以外の場合
		// もしくは最新基本工事である場合
		// ANK-4315-00-00 MOD START
//		if (false == checkKomokuArray(changeDataMsg, KU0011ETMsg.KOJIAK_SBT_CD,
//				new String[] {	JKUStrConst.CD00577_KYOSEI_DSL,
//								JKUStrConst.CD00577_TEKKYO_DSL,
//								JKUStrConst.CD00577_AD_CHG_TEKKYO,
//								JKUStrConst.CD00577_EOH_TEL_TNKJ,
//								JKUStrConst.CD00577_ISETSU,
//								JKUStrConst.CD00577_PLAN_CHG_SHUYO}) 
//								|| true == JKUStrConst.CD00882_RCNT_KIHON_KOJI.equals(changeDataMsg.getString(KU0011ETMsg.RCNT_KIHON_KOJI_FLG)))
		if (false == checkKomokuArray(changeDataMsg, KU0011ETMsg.KOJIAK_SBT_CD,
				new String[] {	JKUStrConst.CD00577_KYOSEI_DSL,
								JKUStrConst.CD00577_TEKKYO_DSL,
								JKUStrConst.CD00577_AD_CHG_TEKKYO,
								JKUStrConst.CD00577_EOH_TEL_TNKJ,
								JKUStrConst.CD00577_ISETSU,
								JKUStrConst.CD00577_PLAN_CHG_SHUYO,
								JKUStrConst.CD00577_ONU}) 
								|| true == JKUStrConst.CD00882_RCNT_KIHON_KOJI.equals(changeDataMsg.getString(KU0011ETMsg.RCNT_KIHON_KOJI_FLG)))
		// ANK-4315-00-00 MOD END
		{
			// 経度
			genesisCheckList.add(new String[] {KU0011ETMsg.LGTD, EKU0041C010CBSMsg.LGTD, null});
			// 緯度
			genesisCheckList.add(new String[] {KU0011ETMsg.LTTD, EKU0041C010CBSMsg.LTTD, null});
		}
		
		boolean genesisCheckResult = JKUModelCommon.checkRnkiSysFlgUpd(changeDataMsg, inCBSMsg, genesisCheckList);
		
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// 場所番号(場所番号)
		taishoList.add(new String[] {KU0011ETMsg.PLACE_NO, EKU0041C010CBSMsg.PLACE_NO, null});
		
		if(adChgeFlg)
		{
			// 住所変更(新設)の場合
			if(JKUStrConst.CD00577_AD_CHG_NEWESTA.equals(kojiakSbtCd))
			{
				// 転宅先住所コードがnullでない場合、転宅先住所を設定する
				if(!"".equals(tentakuSakiAdCd) && tentakuSakiAdCd != null)
				{
					// 転宅先住所コード
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_CD, EKU0041C010CBSMsg.TENTAKU_SAKI_AD_CD, null});
					// 転宅先郵便番号
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_PCD, EKU0041C010CBSMsg.TENTAKU_SAKI_PCD, null});
					// 転宅先都道府県名
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_STATE_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_STATE_NM, null});
					// 転宅先市区町村名
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_CITY_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_CITY_NM, null});
					// 転宅先大字通称名
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_OAZTSU_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_OAZTSU_NM, null});
					// 転宅先字丁目名
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AZCHO_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_AZCHO_NM, null});
					// 転宅先住所番地号
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_BNCHIGO, EKU0041C010CBSMsg.TENTAKU_SAKI_AD_BNCHIGO, null});
					// 転宅先住所補記・建物名
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRTTM, EKU0041C010CBSMsg.TENTAKU_SAKI_ADRTTM, null});
					// 転宅先住所補記・部屋番号
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRRM, EKU0041C010CBSMsg.TENTAKU_SAKI_ADRRM, null});
				}
				// 転宅先住所コードがnull且つ設置場所住所コードが設定されている場合、設置場所住所を設定する
				else if(!"".equals(setplaceAdCd) && setplaceAdCd != null)
				{
					// 転宅先住所コード(設置場所住所コード)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_CD, EKU0041C010CBSMsg.SETPLACE_AD_CD, null});
					// 転宅先郵便番号(設置場所郵便番号)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_PCD, EKU0041C010CBSMsg.SETPLACE_PCD, null});
					// 転宅先都道府県名(設置場所都道府県名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_STATE_NM, EKU0041C010CBSMsg.SETPLACE_STATE_NM, null});
					// 転宅先市区町村名(設置場所市区町村名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_CITY_NM, EKU0041C010CBSMsg.SETPLACE_CITY_NM, null});
					// 転宅先大字通称名(設置場所大字通称名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_OAZTSU_NM, EKU0041C010CBSMsg.SETPLACE_OAZTSU_NM, null});
					// 転宅先字丁目名(設置場所字丁目名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AZCHO_NM, EKU0041C010CBSMsg.SETPLACE_AZCHO_NM, null});
					// 転宅先住所番地号(設置場所住所番地号)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_BNCHIGO, EKU0041C010CBSMsg.SETPLACE_AD_BNCHIGO, null});
					// 転宅先住所補記・建物名(設置場所住所補記・建物名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRTTM, EKU0041C010CBSMsg.SETPLACE_ADRTTM, null});
					// 転宅先住所補記・部屋番号(設置場所住所補記・部屋番号)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRRM, EKU0041C010CBSMsg.SETPLACE_ADRRM, null});
				}
			}
			// 住所変更(撤去)の場合
			else if(JKUStrConst.CD00577_AD_CHG_TEKKYO.equals(kojiakSbtCd))
			{
				// 転宅前住所コードがnullでない場合、転宅前住所を設定する
				if(!"".equals(tentakubfAdCd) && tentakubfAdCd != null)
				{
					// 転宅前住所コード(転宅前住所コード)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_AD_CD, EKU0041C010CBSMsg.TENTAKU_BF_AD_CD, null});
					// 転宅前郵便番号(転宅前郵便番号)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_PCD, EKU0041C010CBSMsg.TENTAKU_BF_PCD, null});
					// 転宅前都道府県名(転宅前都道府県名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_STATE_NM, EKU0041C010CBSMsg.TENTAKU_BF_STATE_NM, null});
					// 転宅前市区町村名(転宅前市区町村名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_CITY_NM, EKU0041C010CBSMsg.TENTAKU_BF_CITY_NM, null});
					// 転宅前大字通称名(転宅前大字通称名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_OAZTSU_NM, EKU0041C010CBSMsg.TENTAKU_BF_OAZTSU_NM, null});
					// 転宅前字丁目名(転宅前字丁目名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_AZCHO_NM, EKU0041C010CBSMsg.TENTAKU_BF_AZCHO_NM, null});
					// 転宅前住所番地号(転宅前住所番地号)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_AD_BNCHIGO, EKU0041C010CBSMsg.TENTAKU_BF_AD_BNCHIGO, null});
					// 転宅前住所補記・建物名(転宅前住所補記・建物名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_ADRTTM, EKU0041C010CBSMsg.TENTAKU_BF_ADRTTM, null});
					// 転宅前住所補記・部屋番号(転宅前住所補記・部屋番号)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_ADRRM, EKU0041C010CBSMsg.TENTAKU_BF_ADRRM, null});
				}
				// 転宅前住所コードがnull且つ設置場所住所コードが設定されている場合、設置場所住所を設定する
				else if(!"".equals(setplaceAdCd) && setplaceAdCd != null)
				{
					// 転宅前住所コード(設置場所住所コード)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_AD_CD, EKU0041C010CBSMsg.SETPLACE_AD_CD, null});
					// 転宅前郵便番号(設置場所郵便番号)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_PCD, EKU0041C010CBSMsg.SETPLACE_PCD, null});
					// 転宅前都道府県名(設置場所都道府県名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_STATE_NM, EKU0041C010CBSMsg.SETPLACE_STATE_NM, null});
					// 転宅前市区町村名(設置場所市区町村名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_CITY_NM, EKU0041C010CBSMsg.SETPLACE_CITY_NM, null});
					// 転宅前大字通称名(設置場所大字通称名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_OAZTSU_NM, EKU0041C010CBSMsg.SETPLACE_OAZTSU_NM, null});
					// 転宅前字丁目名(設置場所字丁目名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_AZCHO_NM, EKU0041C010CBSMsg.SETPLACE_AZCHO_NM, null});
					// 転宅前住所番地号(設置場所住所番地号)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_AD_BNCHIGO, EKU0041C010CBSMsg.SETPLACE_AD_BNCHIGO, null});
					// 転宅前住所補記・建物名(設置場所住所補記・建物名)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_ADRTTM, EKU0041C010CBSMsg.SETPLACE_ADRTTM, null});
					// 転宅前住所補記・部屋番号(設置場所住所補記・部屋番号)
					taishoList.add(new String[] {KU0011ETMsg.TENTAKU_BF_ADRRM, EKU0041C010CBSMsg.SETPLACE_ADRRM, null});
				}
			}
		}
		else
		{
			// 設置場所住所コードが設定されている場合、設置場所住所を設定する
			if(!"".equals(setplaceAdCd) && setplaceAdCd != null)
			{
				// 転宅先住所コード(設置場所住所コード)
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_CD, EKU0041C010CBSMsg.SETPLACE_AD_CD, null});
				// 転宅先郵便番号(設置場所郵便番号)
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_PCD, EKU0041C010CBSMsg.SETPLACE_PCD, null});
				// 転宅先都道府県名(設置場所都道府県名)
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_STATE_NM, EKU0041C010CBSMsg.SETPLACE_STATE_NM, null});
				// 転宅先市区町村名(設置場所市区町村名)
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_CITY_NM, EKU0041C010CBSMsg.SETPLACE_CITY_NM, null});
				// 転宅先大字通称名(設置場所大字通称名)
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_OAZTSU_NM, EKU0041C010CBSMsg.SETPLACE_OAZTSU_NM, null});
				// 転宅先字丁目名(設置場所字丁目名)
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AZCHO_NM, EKU0041C010CBSMsg.SETPLACE_AZCHO_NM, null});
				// 転宅先住所番地号(設置場所住所番地号)
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_BNCHIGO, EKU0041C010CBSMsg.SETPLACE_AD_BNCHIGO, null});
				// 転宅先住所補記・建物名(設置場所住所補記・建物名)
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRTTM, EKU0041C010CBSMsg.SETPLACE_ADRTTM, null});
				// 転宅先住所補記・部屋番号(設置場所住所補記・部屋番号)
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRRM, EKU0041C010CBSMsg.SETPLACE_ADRRM, null});
			}
			// 設置場所住所コードがnull且つ転宅先住所コードが設定されている場合、転宅先住所を設定する
			else if(!"".equals(tentakuSakiAdCd) && tentakuSakiAdCd != null)
			{
				// 転宅先住所コード
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_CD, EKU0041C010CBSMsg.TENTAKU_SAKI_AD_CD, null});
				// 転宅先郵便番号
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_PCD, EKU0041C010CBSMsg.TENTAKU_SAKI_PCD, null});
				// 転宅先都道府県名
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_STATE_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_STATE_NM, null});
				// 転宅先市区町村名
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_CITY_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_CITY_NM, null});
				// 転宅先大字通称名
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_OAZTSU_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_OAZTSU_NM, null});
				// 転宅先字丁目名
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AZCHO_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_AZCHO_NM, null});
				// 転宅先住所番地号
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_AD_BNCHIGO, EKU0041C010CBSMsg.TENTAKU_SAKI_AD_BNCHIGO, null});
				// 転宅先住所補記・建物名
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRTTM, EKU0041C010CBSMsg.TENTAKU_SAKI_ADRTTM, null});
				// 転宅先住所補記・部屋番号
				taishoList.add(new String[] {KU0011ETMsg.TENTAKU_SAKI_ADRRM, EKU0041C010CBSMsg.TENTAKU_SAKI_ADRRM, null});
			}
		}
		// 工事先住所未確定フラグ
		taishoList.add(new String[] {KU0011ETMsg.KOJI_SAKI_AD_MI_FIX_FLG, EKU0041C010CBSMsg.KOJI_SAKI_AD_MI_FIX_FLG, null});
		
		// もしくは最新基本工事である場合
		// ANK-4315-00-00 MOD START
//		if (false == checkKomokuArray(changeDataMsg, KU0011ETMsg.KOJIAK_SBT_CD,
//				new String[] {	JKUStrConst.CD00577_KYOSEI_DSL,
//								JKUStrConst.CD00577_TEKKYO_DSL,
//								JKUStrConst.CD00577_AD_CHG_TEKKYO,
//								JKUStrConst.CD00577_EOH_TEL_TNKJ,
//								JKUStrConst.CD00577_ISETSU,
//								JKUStrConst.CD00577_PLAN_CHG_SHUYO}) 
//								|| true == JKUStrConst.CD00882_RCNT_KIHON_KOJI.equals(changeDataMsg.getString(KU0011ETMsg.RCNT_KIHON_KOJI_FLG)))
		if (false == checkKomokuArray(changeDataMsg, KU0011ETMsg.KOJIAK_SBT_CD,
				new String[] {	JKUStrConst.CD00577_KYOSEI_DSL,
								JKUStrConst.CD00577_TEKKYO_DSL,
								JKUStrConst.CD00577_AD_CHG_TEKKYO,
								JKUStrConst.CD00577_EOH_TEL_TNKJ,
								JKUStrConst.CD00577_ISETSU,
								JKUStrConst.CD00577_PLAN_CHG_SHUYO,
								JKUStrConst.CD00577_ONU}) 
								|| true == JKUStrConst.CD00882_RCNT_KIHON_KOJI.equals(changeDataMsg.getString(KU0011ETMsg.RCNT_KIHON_KOJI_FLG)))
		// ANK-4315-00-00 MOD END
		{
			/** 座標取得処理 */
			
			LinkedHashMap<String, BigDecimal> zahyoMap = 
				JKUModelCommon.allZahyoBX(inCBSMsg.getString(EKU0041C010CBSMsg.LGTD), inCBSMsg.getString(EKU0041C010CBSMsg.LTTD));
			
			// 部品から取得したマップのエラー格納箇所に値が入っていた場合エラー
			if (null != zahyoMap.get(JKUStrConst.ZAHYO_SET_ERROR))
			{
				String zahyoErrorCheck = zahyoMap.get(JKUStrConst.ZAHYO_SET_ERROR).toString();
				
				if (!JKUStrConst.ZAHYO_MAP_ERROR_NULL.equals(zahyoErrorCheck))
				{
					// nullエラー以外のエラーの場合
					
					// 座標変換エラーを登録
					inCBSMsg.set(EKU0041C010CBSMsg.LTTD_ERR, "EJ");
					inCBSMsg.set(EKU0041C010CBSMsg.LGTD_ERR, "EJ");
					// ステータス
					inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
					return false;
				}
				
			}
			else if(null == zahyoMap.get(JKUStrConst.ZAHYO_SET_ERROR))
			{
				// エラー無しの場合
				
				// 緯度経度を転記する
				
				// 経度
				taishoList.add(new String[] {KU0011ETMsg.LGTD, EKU0041C010CBSMsg.LGTD, null});
				// 緯度
				taishoList.add(new String[] {KU0011ETMsg.LTTD, EKU0041C010CBSMsg.LTTD, null});
				
				// XY座標を登録する
				
				// X座標6系(緯度・経度より求める)
				taishoList.add(new String[] {KU0011ETMsg.XZAHYO_6, null,
						JKUModelCommon.convDoubleToString(zahyoMap.get(JKUStrConst.ZAHYO_MAP_X_6))});
				// Y座標6系(緯度・経度より求める)
				taishoList.add(new String[] {KU0011ETMsg.YZAHYO_6, null,
						JKUModelCommon.convDoubleToString(zahyoMap.get(JKUStrConst.ZAHYO_MAP_Y_6))});
				// X座標5系(緯度・経度より求める)
				taishoList.add(new String[] {KU0011ETMsg.XZAHYO_5, null,
						JKUModelCommon.convDoubleToString(zahyoMap.get(JKUStrConst.ZAHYO_MAP_X_5))});
				// Y座標5系(緯度・経度より求める)
				taishoList.add(new String[] {KU0011ETMsg.YZAHYO_5, null,
						JKUModelCommon.convDoubleToString(zahyoMap.get(JKUStrConst.ZAHYO_MAP_Y_5))});
				
			}
			// 座標補正有無
			taishoList.add(new String[] {KU0011ETMsg.ZAHYO_HOSEI_UM, EKU0041C010CBSMsg.ZAHYO_HOSEI_UM, null});
		}
		
		if(JKUStrConst.CD00475_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT)))
		{
			// 住所形態コード
			taishoList.add(new String[] {KU0011ETMsg.AD_FORM_CD, EKU0041C010CBSMsg.AD_FORM_CD, null});
			// 新築物件コード
			String newConstBukkenCd = inCBSMsg.getString(EKU0041C010CBSMsg.NEWCONST_BUKKEN_CD);
			if (null == newConstBukkenCd || "".equals(newConstBukkenCd))
			{
				newConstBukkenCd = JKUStrConst.NEWCONST_BUKKEN_CD_DEF;
			}
			taishoList.add(new String[] {KU0011ETMsg.NEWCONST_BUKKEN_CD, null, newConstBukkenCd});
			// 入居階数コード
			taishoList.add(new String[] {KU0011ETMsg.NYUKYO_FLR_CNT_CD, EKU0041C010CBSMsg.NYUKYO_FLR_CNT_CD, null});
			// 建築階数コード
			taishoList.add(new String[] {KU0011ETMsg.KCKU_FLR_CNT_CD, EKU0041C010CBSMsg.KCKU_FLR_CNT_CD, null});
			// 方角コード1
			taishoList.add(new String[] {KU0011ETMsg.DIRECTION_CD_1, EKU0041C010CBSMsg.DIRECTION_CD_1, null});
		}
		// 方角コード2
		taishoList.add(new String[] {KU0011ETMsg.DIRECTION_CD_2, EKU0041C010CBSMsg.DIRECTION_CD_2, null});
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList) || -1 != kojiakNoList.indexOf(changeDataMsg.getString(KU0011ETMsg.KOJIAK_NO)))
		{
			// OPMS変更連携要否('要'　工事案件ステータスが｢受付済み｣以外の場合のみ)
			if(!JKUStrConst.CD00474_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT)))
			{
				changeDataMsg.set(KU0011ETMsg.OPMS_CHGE_RNKI_YH, JKUStrConst.KH_PSG);
			}
			
			// FCDS変更連携要否('要'　工事案件ステータスが「受付済」以外かつ、FCDS項目に変更があった場合)
			if (false == JKUStrConst.CD00474_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT))
					&& true == fcdsCheckResult)
			{
				changeDataMsg.set(KU0011ETMsg.FCDS_CHGE_RNKI_YH, JKUModelCommon.getChgRnkiYh(changeDataMsg, JKUStrConst.RNKI_SYSTEM_FCDS));
			}
			
			// Genesis変更連携要否('要'　工事案件ステータスが「受付済」以外かつ、Genesis項目に変更があった場合)
			if (false == JKUStrConst.CD00474_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT))
					&& true == genesisCheckResult)
			{
				changeDataMsg.set(KU0011ETMsg.GENESIS_CHGE_RNKI_YH, JKUModelCommon.getChgRnkiYh(changeDataMsg, JKUStrConst.RNKI_SYSTEM_GENESIS));
			}
			
			// 更新年月日時分秒
			changeDataMsg.set(KU0011ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0011ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0011SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0011ETMsg.KOJIAK_NO));
		}
		
		return true;
	}

	/**
	 * 回線情報変更＿光テレビ回線
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateKaisenKU0041(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// 工事案件eo光テレビ回線を更新する
		JKUejbKU0041SecProc ku0041SecProc = new JKUejbKU0041SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// 復活案件フラグ
		String hukkatAnkenFlg = inCBSMsg.getString(EKU0041C010CBSMsg.HUKKAT_ANKEN_FLG);
		if (null == hukkatAnkenFlg || "".equals(hukkatAnkenFlg))
		{
			hukkatAnkenFlg = JKUStrConst.HUKKAT_ANKEN_FLG_NON;
		}
		taishoList.add(new String[] {KU0041ETMsg.HUKKAT_ANKEN_FLG, null, hukkatAnkenFlg});
		// 同一設備再申込コード
		taishoList.add(new String[] {KU0041ETMsg.SAME_EQUIP_RE_MSKM_CD, EKU0041C010CBSMsg.SAME_EQUIP_RE_MSKM_CD, null});
		// 電波障害案件番号
		taishoList.add(new String[] {KU0041ETMsg.DMPS_ANKEN_NO, EKU0041C010CBSMsg.DMPS_ANKEN_NO, null});
		// 電波障害案件種別コード
		taishoList.add(new String[] {KU0041ETMsg.DMPSANK_SBT_CD, EKU0041C010CBSMsg.DMPSANK_SBT_CD, null});
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList))
		{
			// 更新年月日時分秒
			changeDataMsg.set(KU0041ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0041ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0041SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0041ETMsg.KOJIAK_NO));
		}
	}
	
	/**
	 * 回線情報変更＿光ネット
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateKaisenKU0021(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// 工事案件eo光ネットを更新する
		JKUejbKU0021SecProc ku0021SecProc = new JKUejbKU0021SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// お客様SOS利用有無
		taishoList.add(new String[] {KU0021ETMsg.CUST_SOS_USE_UM, EKU0041C010CBSMsg.CUST_SOS_USE_UM, null});
		// 復活案件フラグ
		String hukkatAnkenFlg = inCBSMsg.getString(EKU0041C010CBSMsg.HUKKAT_ANKEN_FLG);
		if (null == hukkatAnkenFlg || "".equals(hukkatAnkenFlg))
		{
			hukkatAnkenFlg = JKUStrConst.HUKKAT_ANKEN_FLG_NON;
		}
		taishoList.add(new String[] {KU0021ETMsg.HUKKAT_ANKEN_FLG, null, hukkatAnkenFlg});
		// 同一設備再申込コード
		taishoList.add(new String[] {KU0021ETMsg.SAME_EQUIP_RE_MSKM_CD, EKU0041C010CBSMsg.SAME_EQUIP_RE_MSKM_CD, null});
		// 電波障害案件種別コード
		taishoList.add(new String[] {KU0021ETMsg.DMPSANK_SBT_CD, EKU0041C010CBSMsg.DMPSANK_SBT_CD, null});
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList))
		{
			// 更新年月日時分秒
			changeDataMsg.set(KU0021ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0021ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0021SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0021ETMsg.KOJIAK_NO));
		}
	}
	
	/**
	 * 回線情報変更＿光ネットマンション
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateKaisenKU0061(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// 工事案件eo光ネットマンションを更新する
		JKUejbKU0061SecProc ku0061SecProc = new JKUejbKU0061SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// お客様SOS利用有無
		taishoList.add(new String[] {KU0061ETMsg.CUST_SOS_USE_UM, EKU0041C010CBSMsg.CUST_SOS_USE_UM, null});
		// 復活案件フラグ
		String hukkatAnkenFlg = inCBSMsg.getString(EKU0041C010CBSMsg.HUKKAT_ANKEN_FLG);
		if (null == hukkatAnkenFlg || "".equals(hukkatAnkenFlg))
		{
			hukkatAnkenFlg = JKUStrConst.HUKKAT_ANKEN_FLG_NON;
		}
		taishoList.add(new String[] {KU0061ETMsg.HUKKAT_ANKEN_FLG, null, hukkatAnkenFlg});
		// 同一設備再申込コード
		taishoList.add(new String[] {KU0061ETMsg.SAME_EQUIP_RE_MSKM_CD, EKU0041C010CBSMsg.SAME_EQUIP_RE_MSKM_CD, null});
		// 電波障害案件種別コード
		taishoList.add(new String[] {KU0061ETMsg.DMPSANK_SBT_CD, EKU0041C010CBSMsg.DMPSANK_SBT_CD, null});
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList))
		{
			// 更新年月日時分秒
			changeDataMsg.set(KU0061ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0061ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0061SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0061ETMsg.KOJIAK_NO));
		}
	}

	/**
	 * 回線情報変更＿先行設計
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @return boolean
	 * @throws CAANException
	 */
	private boolean updateKaisenKU0101(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// 先行設計を更新する
		JKUejbKU0101SecProc ku0101SecProc = new JKUejbKU0101SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// 工事案件データ取得
		CAANMsg msgKU0011 = getKU0011FindByPrimaryKeyE(changeDataMsg.getString(KU0101ETMsg.KOJIAK_NO));
		
		// 更新対象の工事案件が住変系かどうか
		boolean adChgeFlg = JKUModelCommon.isAdChgeAk(msgKU0011.getString(KU0011ETMsg.KOJIAK_SBT_CD));
		
		/** 座標取得処理 */
		
		LinkedHashMap<String, BigDecimal> zahyoMap = 
			JKUModelCommon.allZahyoBX(inCBSMsg.getString(EKU0041C010CBSMsg.LGTD), inCBSMsg.getString(EKU0041C010CBSMsg.LTTD));
		
		// 部品から取得したマップのエラー格納箇所に値が入っていた場合エラー
		if (null != zahyoMap.get(JKUStrConst.ZAHYO_SET_ERROR))
		{
			String zahyoErrorCheck = zahyoMap.get(JKUStrConst.ZAHYO_SET_ERROR).toString();
			
			if (!JKUStrConst.ZAHYO_MAP_ERROR_NULL.equals(zahyoErrorCheck))
			{
				// nullエラー以外のエラーの場合
				
				// 座標変換エラーを登録
				inCBSMsg.set(EKU0041C010CBSMsg.LTTD_ERR, "EJ");
				inCBSMsg.set(EKU0041C010CBSMsg.LGTD_ERR, "EJ");
				// ステータス
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
				return false;
			}
		}
		else if(null == zahyoMap.get(JKUStrConst.ZAHYO_SET_ERROR))
		{
			// エラー無しの場合
			
			// XY座標を登録する
			
			// X座標6系(緯度・経度より求める)
			taishoList.add(new String[] {KU0101ETMsg.XZAHYO_6, null,
					JKUModelCommon.convDoubleToString(zahyoMap.get(JKUStrConst.ZAHYO_MAP_X))});
			// Y座標6系(緯度・経度より求める)
			taishoList.add(new String[] {KU0101ETMsg.YZAHYO_6, null,
					JKUModelCommon.convDoubleToString(zahyoMap.get(JKUStrConst.ZAHYO_MAP_Y))});
			// X座標5系(緯度・経度より求める)
			taishoList.add(new String[] {KU0101ETMsg.XZAHYO_5, null,
					JKUModelCommon.convDoubleToString(zahyoMap.get(JKUStrConst.ZAHYO_MAP_X_5))});
			// Y座標5系(緯度・経度より求める)
			taishoList.add(new String[] {KU0101ETMsg.YZAHYO_5, null,
					JKUModelCommon.convDoubleToString(zahyoMap.get(JKUStrConst.ZAHYO_MAP_Y_5))});
			
		}
		
		
		
		// 場所番号(場所番号)
		taishoList.add(new String[] {KU0101ETMsg.PLACE_NO, EKU0041C010CBSMsg.PLACE_NO, null});
		
		if(adChgeFlg)
		{
			// 設置場所住所コード(転宅先住所コード)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_AD_CD, EKU0041C010CBSMsg.TENTAKU_SAKI_AD_CD, null});
			// 設置場所郵便番号(転宅先郵便番号)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_PCD, EKU0041C010CBSMsg.TENTAKU_SAKI_PCD, null});
			// 設置場所都道府県名(転宅先都道府県名)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_STATE_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_STATE_NM, null});
			// 設置場所市区町村名(転宅先市区町村名)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_CITY_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_CITY_NM, null});
			// 設置場所大字通称名(転宅先大字通称名)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_OAZTSU_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_OAZTSU_NM, null});
			// 設置場所字丁目名(転宅先字丁目名)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_AZCHO_NM, EKU0041C010CBSMsg.TENTAKU_SAKI_AZCHO_NM, null});
			// 設置場所住所番地号(転宅先住所番地号)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_AD_BNCHIGO, EKU0041C010CBSMsg.TENTAKU_SAKI_AD_BNCHIGO, null});
			// 設置場所住所補記・建物名(転宅先住所補記・建物名)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_ADRTTM, EKU0041C010CBSMsg.TENTAKU_SAKI_ADRTTM, null});
			// 設置場所住所補記・部屋番号(転宅先住所補記・部屋番号)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_ADRRM, EKU0041C010CBSMsg.TENTAKU_SAKI_ADRRM, null});
		}
		else
		{
			// 設置場所住所コード(設置場所住所コード)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_AD_CD, EKU0041C010CBSMsg.SETPLACE_AD_CD, null});
			// 設置場所郵便番号(設置場所郵便番号)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_PCD, EKU0041C010CBSMsg.SETPLACE_PCD, null});
			// 設置場所都道府県名(設置場所都道府県名)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_STATE_NM, EKU0041C010CBSMsg.SETPLACE_STATE_NM, null});
			// 設置場所市区町村名(設置場所市区町村名)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_CITY_NM, EKU0041C010CBSMsg.SETPLACE_CITY_NM, null});
			// 設置場所大字通称名(設置場所大字通称名)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_OAZTSU_NM, EKU0041C010CBSMsg.SETPLACE_OAZTSU_NM, null});
			// 設置場所字丁目名(設置場所字丁目名)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_AZCHO_NM, EKU0041C010CBSMsg.SETPLACE_AZCHO_NM, null});
			// 設置場所住所番地号(設置場所住所番地号)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_AD_BNCHIGO, EKU0041C010CBSMsg.SETPLACE_AD_BNCHIGO, null});
			// 設置場所住所補記・建物名(設置場所住所補記・建物名)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_ADRTTM, EKU0041C010CBSMsg.SETPLACE_ADRTTM, null});
			// 設置場所住所補記・部屋番号(設置場所住所補記・部屋番号)
			taishoList.add(new String[] {KU0101ETMsg.SETPLACE_ADRRM, EKU0041C010CBSMsg.SETPLACE_ADRRM, null});
		}
		// 回線場所電話番号(回線場所電話番号)
		taishoList.add(new String[] {KU0101ETMsg.KAISEN_PLACE_TELNO, EKU0041C010CBSMsg.KAISEN_PLACE_TELNO, null});
		// 建築階数コード
		taishoList.add(new String[] {KU0101ETMsg.KCKU_FLR_CNT_CD, EKU0041C010CBSMsg.KCKU_FLR_CNT_CD, null});
		// 座標補正有無
		taishoList.add(new String[] {KU0101ETMsg.ZAHYO_HOSEI_UM, EKU0041C010CBSMsg.ZAHYO_HOSEI_UM, null});
		// 電波障害案件種別コード
		taishoList.add(new String[] {KU0101ETMsg.DMPSANK_SBT_CD, EKU0041C010CBSMsg.DMPSANK_SBT_CD, null});
		// 電波障害案件番号
		taishoList.add(new String[] {KU0101ETMsg.DMPS_ANKEN_NO, EKU0041C010CBSMsg.DMPS_ANKEN_NO, null});
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList))
		{
			// 更新年月日時分秒
			changeDataMsg.set(KU0101ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0101ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0101SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0101ETMsg.KOJIAK_NO));
		}
		
		return true;
	}
	
	/**
	 * 工事情報変更＿工事案件
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateKojiKU0011(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// 工事案件を更新する
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// プラン変更確定年月日時分秒に値が設定されている場合は運用日付+オールゼロに値を変更する
		if(!inCBSMsg.isNull(EKU0041C010CBSMsg.PLAN_CHG_FIX_YMD))
		{
			inCBSMsg.set(EKU0041C010CBSMsg.PLAN_CHG_FIX_YMD, JKUModelCommon.getOpeDate(inCBSMsg, null) + "000000000");
		}
		
		// Genesis変更連携要否('要'　プラン変更確定年月日更新時) かつ 工事案件ステータスが登録済でない
		if(JKUModelCommon.isChanged(changeDataMsg.getString(KU0011ETMsg.PLAN_CHG_FIX_DTM), inCBSMsg.getString(EKU0041C010CBSMsg.PLAN_CHG_FIX_YMD))
				&& !JKUStrConst.CD00474_TOROKU_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT)))
		{
			taishoList.add(new String[] {KU0011ETMsg.GENESIS_CHGE_RNKI_YH, null, JKUModelCommon.getChgRnkiYh(changeDataMsg, JKUStrConst.RNKI_SYSTEM_GENESIS)});
		}
		
		// 工事希望年月日
		taishoList.add(new String[] {KU0011ETMsg.KOJI_KIBO_YMD, EKU0041C010CBSMsg.KOJI_KIBO_YMD, null});
		// 申込者名
		taishoList.add(new String[] {KU0011ETMsg.MSKMSHA_NM, EKU0041C010CBSMsg.MSKMSHA_NM, null});
		// 竣工予定年月日
		taishoList.add(new String[] {KU0011ETMsg.SHUNKO_RSV_YMD, EKU0041C010CBSMsg.SHUNKO_RSV_YMD, null});
		// 入居予定年月日
		taishoList.add(new String[] {KU0011ETMsg.NYUKYO_RSV_YMD, EKU0041C010CBSMsg.NYUKYO_RSV_YMD, null});
		// 引渡し予定年月日
		taishoList.add(new String[] {KU0011ETMsg.HIKIWATASHI_RSV_YMD, EKU0041C010CBSMsg.HIKIWATASHI_RSV_YMD, null});
		// 電力送電予定年月日
		taishoList.add(new String[] {KU0011ETMsg.EPOWER_SODEN_RSV_YMD, EKU0041C010CBSMsg.EPOWER_SODEN_RSV_YMD, null});
		// 電話連絡希望年月日
		taishoList.add(new String[] {KU0011ETMsg.TEL_RRK_KIBO_YMD, EKU0041C010CBSMsg.TEL_RRK_KIBO_YMD, null});
		// 電話連絡希望時間帯コード
		taishoList.add(new String[] {KU0011ETMsg.TEL_RRK_KIBO_TIME_CD, EKU0041C010CBSMsg.TEL_RRK_KIBO_TIME_CD, null});
		// 宅内調査希望アポ期限年月日
		taishoList.add(new String[] {KU0011ETMsg.TAKCHO_KIBO_APO_KIGEN_YMD, EKU0041C010CBSMsg.TAKCHO_KIBO_APO_KIGEN_YMD, null});
		// 宅内工事希望アポ期限年月日
		taishoList.add(new String[] {KU0011ETMsg.TNKJ_KIBO_APO_KIGEN_YMD, EKU0041C010CBSMsg.TNKJ_KIBO_APO_KIGEN_YMD, null});
		// 工事アポ連絡先指定コード
		taishoList.add(new String[] {KU0011ETMsg.KOJI_APO_RRKS_SHITEI_CD, EKU0041C010CBSMsg.KOJI_APO_RRKS_SHITEI_CD, null});
		// 工事アポ連絡先電話番号
		taishoList.add(new String[] {KU0011ETMsg.KOJI_APO_RRKS_TELNO, EKU0041C010CBSMsg.KOJI_APO_RRKS_TELNO, null});
		// 連絡手段コード
		taishoList.add(new String[] {KU0011ETMsg.RRK_WAY_CD, EKU0041C010CBSMsg.RRK_WAY_CD, null});
		// 連絡手段補記
		taishoList.add(new String[] {KU0011ETMsg.RRK_WAY_HOKI, EKU0041C010CBSMsg.RRK_WAY_HOKI, null});
		// 工事案件連絡事項
		taishoList.add(new String[] {KU0011ETMsg.KOJIAK_RRK_JIKO, EKU0041C010CBSMsg.KOJIAK_BIKO, null});
		// 工事案件備考1
		taishoList.add(new String[] {KU0011ETMsg.KOJIAK_BIKO_1, EKU0041C010CBSMsg.KOJIAK_BIKO_1, null});
		// 工事案件備考2
		taishoList.add(new String[] {KU0011ETMsg.KOJIAK_BIKO_2, EKU0041C010CBSMsg.KOJIAK_BIKO_2, null});
		// プラン変更確定年月日時分秒
		taishoList.add(new String[] {KU0011ETMsg.PLAN_CHG_FIX_DTM, EKU0041C010CBSMsg.PLAN_CHG_FIX_YMD, null});
		
// ANK-3136-00-00 ADD START
		// 他システム連携_工事連絡先氏名
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_KJ_RRKS_NM, EKU0041C010CBSMsg.TSYRN_KJ_RRKS_NM, null});
		// 他システム連携_工事連絡先電話番号
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_KJ_RRKS_TLN, EKU0041C010CBSMsg.TSYRN_KJ_RRKS_TLN, null});
		// 他システム連携_宅内調査時連絡先氏名
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_TAKCHO_JI_RRKS_NM, EKU0041C010CBSMsg.TSYRN_TAKCHO_JI_RRKS_NM, null});
		// 他システム連携_宅内調査時連絡先電話番号
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_TAKCHO_JI_RRKS_TLN, EKU0041C010CBSMsg.TSYRN_TAKCHO_JI_RRKS_TLN, null});
		// 他システム連携_連絡希望日時
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_RRK_KIBO_DATE, EKU0041C010CBSMsg.TSYRN_RRK_KIBO_DATE, null});
		// 他システム連携_工事費用
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_KOJI_HI, EKU0041C010CBSMsg.TSYRN_KOJI_HI, null});
		// 他システム連携_宅内調査要否
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_TAKCHO_YH, EKU0041C010CBSMsg.TSYRN_TAKCHO_YH, null});
		// 他システム連携_承諾書要否
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_SDAKS_YH, EKU0041C010CBSMsg.TSYRN_SDAKS_YH, null});
		// 他システム連携_立会者名
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_TACHIAISHA_NM, EKU0041C010CBSMsg.TSYRN_TACHIAISHA_NM, null});
		// 他システム連携_引越し施策要否
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_HKKS_SISAK_YH, EKU0041C010CBSMsg.TSYRN_HKKS_SISAK_YH, null});
		// 他システム連携_建替時新設案件要否
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_TTK_JI_NSANK_YH, EKU0041C010CBSMsg.TSYRN_TTK_JI_NSANK_YH, null});
		// 他システム連携_地図有無
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_MAP_UM, EKU0041C010CBSMsg.TSYRN_MAP_UM, null});
		// 他システム連携_同時工事情報
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_DOJI_KOJI_INF, EKU0041C010CBSMsg.TSYRN_DOJI_KOJI_INF, null});
		// 他システム連携_既存契約情報
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_KZN_KEI_INF, EKU0041C010CBSMsg.TSYRN_KZN_KEI_INF, null});
		// 他システム連携_不備解消年月日
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_HBI_KAISHOU_YMD, EKU0041C010CBSMsg.TSYRN_HBI_KAISHOU_YMD, null});
		// 他システム連携_キャンペーン情報
		taishoList.add(new String[] {KU0011ETMsg.TSYRN_CAMPAIGN_INF, EKU0041C010CBSMsg.TSYRN_CAMPAIGN_INF, null});
		// 宅内調査要否
		taishoList.add(new String[] {KU0011ETMsg.TAKCHO_YH, EKU0041C010CBSMsg.TAKCHO_YH, null});
		// 設計要否
		taishoList.add(new String[] {KU0011ETMsg.DSGN_YH, EKU0041C010CBSMsg.DSGN_YH, null});
// ANK-3136-00-00 ADD END
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList) || -1 != kojiakNoList.indexOf(changeDataMsg.getString(KU0011ETMsg.KOJIAK_NO)))
		{
			// OPMS変更連携要否('要'　工事案件ステータスが｢登録済｣「受付済」以外の場合のみ)
			if(!JKUStrConst.CD00474_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT))
					&& !JKUStrConst.CD00474_TOROKU_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT)))
			{
				changeDataMsg.set(KU0011ETMsg.OPMS_CHGE_RNKI_YH, JKUStrConst.KH_PSG);
			}
			// 更新年月日時分秒
			changeDataMsg.set(KU0011ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0011ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0011SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0011ETMsg.KOJIAK_NO));
		}
	}

	/**
	 * 工事情報変更＿光テレビ回線
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateKojiKU0041(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// 工事案件eo光テレビ回線を更新する
		JKUejbKU0041SecProc ku0041SecProc = new JKUejbKU0041SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// 工事範囲コード
		taishoList.add(new String[] {KU0041ETMsg.KOJI_SCOPE_CD, EKU0041C010CBSMsg.KOJI_SCOPE_CD, null});
		// 解約希望年月日
		taishoList.add(new String[] {KU0041ETMsg.DSL_KIBO_YMD, EKU0041C010CBSMsg.DSL_KIBO_YMD, null});
		// 移設コード
		taishoList.add(new String[] {KU0041ETMsg.ISETSU_CD, EKU0041C010CBSMsg.ISETSU_CD, null});
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList))
		{
			// 更新年月日時分秒
			changeDataMsg.set(KU0041ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0041ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0041SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0041ETMsg.KOJIAK_NO));
		}
	}
	
	/**
	 * 機器情報変更_工事案件
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateKikiKU0011(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// 工事案件を更新する
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// 料金コースコードが設定されている場合のみ設定
		if(!inCBSMsg.isNull(EKU0041C010CBSMsg.PCRS_CD))
		{
			// 料金コースコード
			taishoList.add(new String[] {KU0011ETMsg.PCRS_CD, EKU0041C010CBSMsg.PCRS_CD, null});
		}
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList) || -1 != kojiakNoList.indexOf(changeDataMsg.getString(KU0011ETMsg.KOJIAK_NO)))
		{
			// OPMS変更連携要否('要'　工事案件ステータスが｢受付済み｣以外の場合のみ)
			if(!JKUStrConst.CD00474_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT)))
			{
				changeDataMsg.set(KU0011ETMsg.OPMS_CHGE_RNKI_YH, JKUStrConst.KH_PSG);
			}
			// 更新年月日時分秒
			changeDataMsg.set(KU0011ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0011ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0011SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0011ETMsg.KOJIAK_NO));
		}
	}
	
	/**
	 * 機器情報変更_光テレビ回線
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateKikiKU0041(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// 工事案件eo光テレビ回線を更新する
		JKUejbKU0041SecProc ku0041SecProc = new JKUejbKU0041SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// 工事案件 副次処理
		JKUejbKU0011SecProc sp0011 = new JKUejbKU0011SecProc();
		// 工事案件のETメッセージを作成
		CAANMsg msgKU0011 = new CAANMsg(KU0011ETMsg.class.getName());
		// 工事案件番号
		msgKU0011.set(KU0011ETMsg.KOJIAK_NO, changeDataMsg.getString(KU0041ETMsg.KOJIAK_NO));
		// 更新対象のレコード取得
		CAANMsg outMsgKU0011 = sp0011.findByPrimaryKey(msgKU0011, true);
		// STB台数カウントオブジェクト生成
		JKUCheckSTBCount stbCnt = 
			JKUModelCommon.checkSTBCount(changeDataMsg.getString(KU0041ETMsg.KOJIAK_NO), outMsgKU0011.getString(KU0011ETMsg.KOJIAK_SBT_CD));
		
		
		// STB申込台数(UIA28_機能仕様補足(KU_10_STB機器台数のカウントについて)参照)
		taishoList.add(new String[] {KU0041ETMsg.STB_MSKM_CNT, null, stbCnt.getStbNewestaMskmCnt()});
		// HDR_STB申込台数(UIA28_機能仕様補足(KU_10_STB機器台数のカウントについて)参照)
		taishoList.add(new String[] {KU0041ETMsg.HDR_STB_MSKM_CNT, null, stbCnt.getHdrStbNewestaMskmCnt()});
		// STB契約台数(UIA28_機能仕様補足(KU_10_STB機器台数のカウントについて)参照)
		taishoList.add(new String[] {KU0041ETMsg.STB_KEI_CNT, null, stbCnt.getStbNewKeiCnt()});

		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList))
		{
			// 更新年月日時分秒
			changeDataMsg.set(KU0041ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0041ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0041SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0041ETMsg.KOJIAK_NO));
		}
	}
	
	/**
	 * 宅内機器情報変更＿宅内機器
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException 
	 */
	private void updateKikiKU0141(List<CAANMsg> changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{

		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		
		// 宅内機器データを工事案件番号単位でリスト化しなおす
		List<List<CAANMsg>> kojiAkNoTakniKikiList = JKUModelCommon.getKojiAkNoTakKikiList(changeDataMsg);
		
		// 工事案件番号単位で処理を実行する
		for(int i = 0; i < kojiAkNoTakniKikiList.size(); ++i)
		{
			List<CAANMsg> ku0141MsgList = kojiAkNoTakniKikiList.get(i);
			
			if (null == ku0141MsgList || ku0141MsgList.size() == 0)
			{
				continue;
			}
			
			// 工事案件番号を取得する
			String kojiakNo = ku0141MsgList.get(0).getString(KU0141ETMsg.KOJIAK_NO);
			
			// 工事案件を取得する
			CAANMsg ku0011Msg = new CAANMsg(KU0011ETMsg.class.getName());
			// 工事案件番号
			ku0011Msg.set(KU0011ETMsg.KOJIAK_NO, kojiakNo);
			ku0011Msg = ku0011SecProc.findByPrimaryKey(ku0011Msg, true);
			
			//リストから工事案件番号のみのデータを削除する
			for (int j = 0; j < ku0141MsgList.size(); ++j)
			{
				// 工事案件番号のみが設定された宅内機器データを除外する
				if(null == ku0141MsgList.get(j).getString(KU0141ETMsg.KOJIAK_TRGT_TAKNKIKI_NO))
				{
					ku0141MsgList.remove(j);
					break;
				}
			}
			CAANMsg[] ku0141MsgArray = null;
			if (ku0141MsgList.size() != 0)
			{
				ku0141MsgArray = ku0141MsgList.toArray(new CAANMsg[ku0141MsgList.size()]);
			}
			
			// 宅内機器の更新を実行する
			List<Map<String, String>> result = JKUModelCommon.updTaknkiki(kojiakNo, inCBSMsg, ku0141MsgArray,
					ku0011Msg.getString(KU0011ETMsg.KOJIAK_SBT_CD), inCBSMsg.getString(EKU0041C010CBSMsg.PRC_GRP_CD), false);
			
			// 更新結果を設定する
			if (null != result && result.size() != 0)
			{
				kojiakNoList.add(kojiakNo);
			}
		}
	}
	
	/**
	 * 請求先情報変更_工事案件
	 * @param changeDataMsg 変更対象のスキーマの１レコード
	 * @param inCBSMsg サービスインターフェイス入力電文
	 * @param kojiakNoList 更新を実行した工事案件番号のリスト
	 * @throws CAANException
	 */
	private void updateSeikyuSakiKU0011(CAANMsg changeDataMsg, CAANMsg inCBSMsg, List<String> kojiakNoList) throws CAANException
	{
		// 工事案件を更新する
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		// 比較対象リスト
		List<String[]> taishoList = new ArrayList<String[]>();
		
		// 請求契約番号
		taishoList.add(new String[] {KU0011ETMsg.SEIKY_KEI_NO, EKU0041C010CBSMsg.SEIKY_KEI_NO, null});
		
		// 変更点があれば更新
		if(JKUModelCommon.setCAANMsg(changeDataMsg, inCBSMsg, taishoList) || -1 != kojiakNoList.indexOf(changeDataMsg.getString(KU0011ETMsg.KOJIAK_NO)))
		{
			// OPMS変更連携要否('要'　工事案件ステータスが｢受付済み｣以外の場合のみ)
			if(!JKUStrConst.CD00474_UK_ZM.equals(changeDataMsg.getString(KU0011ETMsg.KOJIAK_STAT)))
			{
				changeDataMsg.set(KU0011ETMsg.OPMS_CHGE_RNKI_YH, JKUStrConst.KH_PSG);
			}
			// 更新年月日時分秒
			changeDataMsg.set(KU0011ETMsg.UPD_DTM, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME));
			// 更新オペレータアカウント
			changeDataMsg.set(KU0011ETMsg.UPD_OPEACNT, inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID));
			
			try
			{
				ku0011SecProc.update(changeDataMsg);
			}
			catch (CAANFinderException cfe)
			{
				inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
				throw cfe;
			}
			
			// 工事案件番号を追加する
			kojiakNoList.add(changeDataMsg.getString(KU0011ETMsg.KOJIAK_NO));
		}
	}
	
	/**
	 * 住所変更確定処理
	 * @param inCBSMsg	CBSメッセージ
	 * @param inContext	ディスパッチコンテキスト
	 * @return	実行結果
	 * @throws CAANException
	 */
	private boolean updateAdChgFix(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANException
	{
		// ---処理対象の取得
		
		// 工事案件番号
		String kojiakNo = inCBSMsg.getString(EKU0041C010CBSMsg.KOJIAK_NO);
		// サービス契約番号
		String svcKeiNo = inCBSMsg.getString(EKU0041C010CBSMsg.SVC_KEI_NO);
		
		// 住所変更確定処理対象工事案件情報の取得
		CAANMsg taishoKojiakInfo = null;
		
		// 工事案件副次処理部品
		JKUejbKU0011SecProc ku0011SecProc = new JKUejbKU0011SecProc();
		// 
		CAANMsg ku0011Msg = null;
		
		ku0011Msg = new CAANMsg(KU0011ETMsg.class.getName());
		
		// 工事案件番号
		ku0011Msg.set(KU0011ETMsg.KOJIAK_NO, kojiakNo);
		
		// PK検索を実行
		ku0011Msg = ku0011SecProc.findByPrimaryKey(ku0011Msg, true);
		
		if (null == ku0011Msg)
		{
			// 工事案件未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.KOJIAK_NO_ERR, "EG");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return false;
		}
		
		// 仕掛工事判定
		if(JKUModelCommon.isSkkrKojiakJyusyoHenkou(ku0011Msg))
		{
			taishoKojiakInfo = JKUModelCommon.getAdChgFixTaishoKojiakInfo(kojiakNo);
		}
		
		if (null == taishoKojiakInfo)
		{
			// 工事案件未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.KOJIAK_NO_ERR, "EG");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return false;
		}
		
		// 最新基本工事案件情報の取得
		CAANMsg updTgtKojiakInfo = JKUModelCommon.getAdChgRcntKihonKojiak(svcKeiNo);
		
		if (null == updTgtKojiakInfo)
		{
			// 工事案件未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.KOJIAK_NO_ERR, "EH");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return false;
		}
		
		// ---チェックの実行
		
		// 機能コード1以外の場合はチェックのみのため処理を終了する
		if (!JPCModelConstant.FUNC_CD_1.equals(inCBSMsg.getString(EKU0041C010CBSMsg.FUNC_CODE)))
		{
			return true;
		}
		
		// 排他制御
		// 住所変更確定処理対象工事案件情報
		if (!JPCModelCommon.succeededExclusiveLock(taishoKojiakInfo, inContext, JKUStrConst.SCHEMA_KU0011))
		{
			// 工事案件未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.KOJIAK_NO_ERR, "EB");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return false;
		}
		// 最新基本工事案件情報
		if (!JPCModelCommon.succeededExclusiveLock(updTgtKojiakInfo, inContext, JKUStrConst.SCHEMA_KU0011))
		{
			// 工事案件未存在エラーを登録
			inCBSMsg.set(EKU0041C010CBSMsg.KOJIAK_NO_ERR, "EB");
			// ステータス
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return false;
		}
		
		// ---登録更新処理
		
		// 最新基本工事案件番号
		String newestKojiakNo = updTgtKojiakInfo.getString(KU0011ETMsg.KOJIAK_NO);
		
		// 住所変更完了年月日時分秒
		String adChgFixDtm = inCBSMsg.getString(EKU0041C010CBSMsg.AD_CHG_FIX_DTM);
		// 工事受付契機異動年月日時分秒
		String kojiUkOptntyIdoDtm = inCBSMsg.getString(EKU0041C010CBSMsg.KOJI_UK_OPTNTY_IDO_DTM);
		
		// 運用日時
		String operateDateTime = inCBSMsg.getString(EKU0041C010CBSMsg.OPERATEDATETIME);
		// オペレータID
		String operatorId = inCBSMsg.getString(EKU0041C010CBSMsg.OPERATORID);
		
		// 工事案件スキーマの更新
		try
		{
			if (false == JKUModelCommon.updateAdChgFixKU0011(
					taishoKojiakInfo, newestKojiakNo, adChgFixDtm, kojiUkOptntyIdoDtm, operateDateTime, operatorId))
			{
				return false;
			}
		}
		catch (CAANFinderException cfe)
		{
			inCBSMsg.set(EKU0041C010CBSMsg.STATUS, StatusCodes.UPDATE_DB_ERR);
			throw cfe;
		}
		
		return true;
	}
	
	/**
	 * 工事案件ＰＫ検索
	 * @param kojiakNo 工事案件番号
	 * @return 工事案件レコード
	 * @throws CAANException
	 */
	private CAANMsg getKU0011FindByPrimaryKeyE(String kojiakNo) throws CAANException
	{
		// 工事案件 副次処理
		JKUejbKU0011SecProc sp0011 = new JKUejbKU0011SecProc();
		
		// 工事案件のETメッセージを作成
		CAANMsg msgKU0011 = new CAANMsg(KU0011ETMsg.class.getName());
		
		// 工事案件番号
		msgKU0011.set(KU0011ETMsg.KOJIAK_NO, kojiakNo);
		
		// 対象のレコード取得
		return  sp0011.findByPrimaryKey(msgKU0011, true);
		
	}
	
	/**
	 * ロックされた工事案件かどうかを判断
	 * @param caanMsgList
	 * @param inContext
	 * @return boolean
	 */
	private boolean isLockedKojiak(List<CAANMsg> caanMsgList, AgentDispatchContext inContext)
	{
		CAANMsg[] ku0011MsgArray = (CAANMsg[])caanMsgList.toArray(new CAANMsg[caanMsgList.size()]);
		CAANMsg ku0011Msg = null;
		for (int i = 0; i < ku0011MsgArray.length; ++i)
		{
			ku0011Msg = ku0011MsgArray[i];
			
			if (!JPCModelCommon.succeededExclusiveLock(ku0011Msg, inContext, JKUStrConst.SCHEMA_KU0011))
			{
				return true;
			}
		}
		
		return false;
	}
	
	/**
	 * メッセージの項目が、配列のいずれかと合致するものであるかをチェックする
	 * @param msg	チェック対象のメッセージ
	 * @param key	チェック対象のキー
	 * @param checkArray	突合を行う配列
	 * @return	合致する場合true
	 */
	private boolean checkKomokuArray(CAANMsg msg, String key, String[] checkArray)
	{
		if (null == msg || null == key)
		{
			return false;
		}
		if (null == checkArray || checkArray.length == 0)
		{
			return false;
		}
		
		String checkStr = msg.getString(key);
		
		if (null == checkStr)
		{
			return false;
		}
		
		for (int i = 0; i < checkArray.length; ++i)
		{
			if (checkStr.equals(checkArray[i]))
			{
				return true;
			}
		}
		
		return false;
	}

}

