/*********************************************************************
*	All Rights reserved,Copyright(c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKUejbShohenko
*	ソースファイル名：JKUejbShohenko.java
*	作成者			：富士通
*	日付			：2011年08月14日
*＜機能概要＞
*	諸変更共通部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/14	FJ）		新規作成
*
**********************************************************************/
package eo.ejb.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;

import eo.common.constant.JKUStrConst;
import eo.ejb.cbm.entity.KU0011ETMsg;
import eo.ejb.cbm.entity.KU0011LE;
import eo.ejb.cbm.entity.KU0141ETMsg;
import eo.ejb.common.db.JKUejbKU0011SecProc;

/**
 *  <dd>クラス名：諸変更共通部品
 *  <dd>クラス説明：諸変更に共通する処理です。
 *  <dd>備考：
 * @version  1.00 2011/08/16
 * @author 富士通
 *
 */
public class JKUejbShohenko 
{	
	
	/**
	 *  更新対象工事案件Map用他SYS連携判定
	 */
	/** キーとなる工事案件番号 */
	private static final String RNKI_SYS_KOJIAK_NO = "kojiak_no";
	/** 他システム連携必要 */
	private static final String RNKI_SYS_TRUE = "rnki_sys_true";
	/** 他システム連携不要 */
	private static final String RNKI_SYS_FALSE = "rnki_sys_false";

	/**
	 * 項目の比較と設定
	 * @param oldMsg 比較更新先データ
	 * @param newMsg 比較更新元データ
	 * @param taishoList 比較紐づけリスト
	 * @return 比較結果
	 */
	public static boolean setCAANMsg(CAANMsg oldMsg, CAANMsg newMsg, List<String[]> taishoList)
	{
		return checkAndSetCAANMsg(oldMsg, newMsg, taishoList, true);
	}
	
	/**
	 * 項目の比較（CAANMsg)
	 * @param oldMsg 比較更新先データ
	 * @param newMsg 比較更新元データ
	 * @param checkListForRnkiSys 比較紐づけリスト
	 * @return 比較結果
	 */
	public static boolean checkRnkiSysFlgUpd(CAANMsg oldMsg, CAANMsg newMsg, List<String[]> checkListForRnkiSys)
	{
		return checkAndSetCAANMsg(oldMsg, newMsg, checkListForRnkiSys, false);
	}
	
	/**
	 * 更新対象工事案件Mapリストに項目を追加する
	 * @param kojiakNo		工事案件番号
	 * @param updOpmsFlg	OPMS連携要否
	 * @param kojiakNoList	更新対象工事案件Mapリスト
	 * @return 実行結果
	 */
	public static boolean setListKojiakNo(String kojiakNo, boolean updOpmsFlg, List<Map<String, String>> kojiakNoList)
	{
		if (null == kojiakNoList || null == kojiakNo)
		{
			return false;
		}
		
		boolean addFlg = false;
		Map<String, String> kojiakMap = getMapKojiakNo(kojiakNo, kojiakNoList);
		
		if (null == kojiakMap)
		{
			kojiakMap = new HashMap<String, String>();
			addFlg = true;
			kojiakMap.put(RNKI_SYS_KOJIAK_NO, kojiakNo);
		}
		
		if (true == updOpmsFlg)
		{
			kojiakMap.put(JKUStrConst.RNKI_SYSTEM_OPMS, RNKI_SYS_TRUE);
		}
		else
		{
			if (false == RNKI_SYS_TRUE.equals(kojiakMap.get(JKUStrConst.RNKI_SYSTEM_OPMS)))
			{
				kojiakMap.put(JKUStrConst.RNKI_SYSTEM_OPMS, RNKI_SYS_FALSE);
			}
		}
		
		if (true == addFlg)
		{
			kojiakNoList.add(kojiakMap);
		}
		
		return true;
	}
	
	/**
	 * 更新対象工事案件Mapリストに対象の工事案件が存在するかをチェックする
	 * @param kojiakNo	工事案件番号
	 * @param kojiakNoList	更新対象工事案件Mapリスト
	 * @return true:存在する、 false:存在しない
	 */
	public static boolean checkListKojiakNo(String kojiakNo, List<Map<String, String>> kojiakNoList)
	{
		if (null == getMapKojiakNo(kojiakNo, kojiakNoList))
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	
	/**
	 * 更新対象工事案件Mapリストの対照の工事案件が他システム連携を行う必要があるかをチェックする
	 * @param kojiakNo		工事案件番号
	 * @param kojiakNoList	更新対象工事案件Mapリスト
	 * @param rnkiSys		連携する他システム
	 * @return true:他システム連携必要、false:他システム連携不要
	 */
	public static boolean checkListUpfFlg(String kojiakNo, List<Map<String, String>> kojiakNoList, String rnkiSys)
	{
		Map<String, String> kojiakMap = getMapKojiakNo(kojiakNo, kojiakNoList);
		
		if (null == rnkiSys || null == kojiakMap)
		{
			return false;
		}
		if (RNKI_SYS_TRUE.equals(kojiakMap.get(rnkiSys)))
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	
	/**
	 * 項目の比較と設定（CAANMsg)
	 * @param oldMsg 比較更新先データ
	 * @param newMsg 比較更新元データ
	 * @param taishoList 比較紐づけリスト
	 * @param updFlg	設定を行うかのフラグ。true=比較と同時に設定を行う
	 * @return 比較結果
	 */
	private static boolean checkAndSetCAANMsg(CAANMsg oldMsg, CAANMsg newMsg, List<String[]> taishoList, boolean updFlg)
	{
		boolean retBool = false;
		
		// 比較元定数
		String oldConst = null;
		
		// 比較元データ
		String oldStr = null;
		
		// 比較先データ
		String newStr = null;
		
		for(int listCounter = 0; listCounter < taishoList.size(); ++listCounter)
		{
			// ---比較に使用するデータの用意
			
			// 比較元定数を取得する
			oldConst = taishoList.get(listCounter)[0];
			
			// 比較元データを取得する
			oldStr = oldMsg.getString(oldConst);
			
			// 比較先データを取得する
			if (null != taishoList.get(listCounter)[1])
			{
				newStr = newMsg.getString(taishoList.get(listCounter)[1]);
			}
			else
			{
				newStr = taishoList.get(listCounter)[2];
			}
			
			// ---比較の実行
			
			// 値が異なる場合
			if (isChanged(oldStr, newStr))
			{
				// 更新を行う場合
				if (true == updFlg)
				{
					oldMsg.set(oldConst, newStr);
				}
				retBool = true;
			}
		}
		
		return retBool;
	}
	
	/**
	 * 更新対象工事案件Mapリストから、工事案件番号に紐づくMAPを取得する
	 * @param kojiakNo		工事案件番号
	 * @param kojiakNoList	更新対象工事案件Mapリスト
	 * @return 引数の工事案件番号に紐づくMAP
	 */
	private static Map<String, String> getMapKojiakNo(String kojiakNo, List<Map<String, String>> kojiakNoList)
	{
		Map<String, String> retMap = null;
		
		if (null == kojiakNoList || null == kojiakNo)
		{
			return retMap;
		}
		
		for (int i = 0; i < kojiakNoList.size(); ++i)
		{
			if (kojiakNo.equals(kojiakNoList.get(i).get(RNKI_SYS_KOJIAK_NO)))
			{
				retMap = kojiakNoList.get(i);
				break;
			}
		}
		
		return retMap;
	}
	
	/**
	 * 申込明細_工事案件追加対象工事案件番号リスト作成
	 * @param kojiAkNoList 必要分を取得するための工事案件番号リスト
	 * @param addNoList 登録対象工事案件番号リスト
	 */
	public static void setMskmDtlNoKojiakNoList(List<String> kojiAkNoList, List<String> addNoList)
	{
		// TODO OPMS連携要否の仕様変更時、処理、引数の変更が必要
		// 工事案件番号リスト全てに対して実行する
		for (int i = 0; i < kojiAkNoList.size(); ++i)
		{
			// 追加済みの工事案件番号であるかを確認し、新しいものであれば追加する
			if (-1 == addNoList.indexOf(kojiAkNoList.get(i)))
			{
				addNoList.add(kojiAkNoList.get(i));
			}
		}
	}
	
	/**
	 * 工事案件番号宅内機器リスト作成
	 * @param changeDataMsg	 更新対象となる宅内機器リスト
	 * @return	工事案件番号単位でリスト化された宅内機器リスト
	 */
	public static List<List<CAANMsg>> getKojiAkNoTakKikiList(List<CAANMsg> changeDataMsg)
	{
		List<List<CAANMsg>> retList = new ArrayList<List<CAANMsg>>();
		boolean listFlg = false;
		
		for(int i = 0; i < changeDataMsg.size(); ++i)
		{
			listFlg = false;
			
			for(int j = 0; j < retList.size(); ++j)
			{
				// リスト内の1つ目のデータと、工事案件番号で突き合わせを行う
				if(!isChanged(changeDataMsg.get(i).getString(KU0141ETMsg.KOJIAK_NO), retList.get(j).get(0).getString(KU0141ETMsg.KOJIAK_NO)))
				{
					listFlg = true;
					// すでに存在する工事案件番号のリストに追加する
					retList.get(j).add(changeDataMsg.get(i));
				}
			}
			
			// 追加されていない工事案件番号である場合、リストを追加する
			if(false == listFlg)
			{
				List<CAANMsg> addList = new ArrayList<CAANMsg>();
				addList.add(changeDataMsg.get(i));
				retList.add(addList);
			}
		}
		
		return retList;
	}
	
	/**
	 * 文字列比較
	 * @param arg0 比較文字列１
	 * @param arg1 比較文字列２
	 * @return boolean true:変更あり　false:変更なし
	 */
	public static boolean isChanged(String arg0, String arg1)
	{
		if(null == arg0 && null == arg1)
		{
			return false;
		}
		else if(null == arg0 && null != arg1)
		{
			return true;
		}
		else if(null != arg0 && null == arg1)
		{
			return true;
		}
		
		if(arg0.equals(arg1))
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	
	/**
	 * 仕掛中工事案件番号取得
	 * @param kojiAkNoList 工事案件番号リスト
	 * @return 仕掛中工事案件番号リスト
	 * @throws CAANException
	 */
	public static List<String> getShikakariKojiakNo(List<String> kojiAkNoList) throws CAANException
	{
		List<String> retList = new ArrayList<String>();
		
		// 引数の工事案件番号の件数分、サービス契約を取得する。
		for (String kojiakNo : kojiAkNoList)
		{
			// 工事案件ＰＫ検索
			CAANMsg msgKU0011 = getKU0011FindByPrimaryKeyE(kojiakNo);
			
			// 最新基本工事案件フラグチェック
			String rcntKihonKojiFlg = msgKU0011.getString(KU0011ETMsg.RCNT_KIHON_KOJI_FLG);
			
			if(JKUStrConst.UM_YK.equals(rcntKihonKojiFlg))
			{
				continue;
			}
			
			// 工事案件ステータスをチェック
			String kojiakStat = msgKU0011.getString(KU0011ETMsg.KOJIAK_STAT);
			
			if(JKUStrConst.CD00474_UK_ZM.equals(kojiakStat))
			{
				retList.add(kojiakNo);
			}
			else if(JKUStrConst.CD00474_IRI_ZM.equals(kojiakStat))
			{
				retList.add(kojiakNo);
			}
			else if(JKUStrConst.CD00474_TAKNI_CHOSA_FIN_ZM.equals(kojiakStat))
			{
				retList.add(kojiakNo);
			}
			else if(JKUStrConst.CD00474_KOCOMP_KETTEI_ZM.equals(kojiakStat))
			{
				retList.add(kojiakNo);
			}
			else if(JKUStrConst.CD00474_TAKNI_CHOSA_RSV_ZM.equals(kojiakStat))
			{
				retList.add(kojiakNo);
			}
			else if(JKUStrConst.CD00474_KR_KAGI_KAIHAT_IRI_ZM.equals(kojiakStat))
			{
				retList.add(kojiakNo);
			}
		}
		
		return retList;
	}
	
	
	/**
	 * 仕掛中、最新、住変（新設）である場合trueを返す
	 * @param ku0011Msg	工事案件データ
	 * @return	判定結果
	 */
	public static boolean isSkkrOrSaishinKojiak(CAANMsg ku0011Msg)
	{
		
		if (null == ku0011Msg)
		{
			return false;
		}
		
		boolean retBool = true;
		
		// 最新基本工事フラグ
		String saishinFlg = ku0011Msg.getString(KU0011ETMsg.RCNT_KIHON_KOJI_FLG);
		// 工事案件ステータス
		String kojiakStat = ku0011Msg.getString(KU0011ETMsg.KOJIAK_STAT);
		// 工事案件種別コード
		String kojiakSbtCd = ku0011Msg.getString(KU0011ETMsg.KOJIAK_SBT_CD);
		// 住所変更確定年月日時分秒
		String adChgFixDtm = ku0011Msg.getString(KU0011ETMsg.AD_CHG_FIX_DTM);
		// マンション工事案件状態コード
		String mansKojiakStatCd = ku0011Msg.getString(KU0011ETMsg.MANS_KOJIAK_STAT_CD);
		
		// 最新基本工事フラグ
		if (JKUStrConst.CD00882_RCNT_KIHON_KOJI.equals(saishinFlg))
		{
			return true;
		}
		
		// 工事案件ステータス
		if (JKUStrConst.CD00474_KOJI_FIN_ZM.equals(kojiakStat))
		{
			if (JKUStrConst.CD00577_AD_CHG_NEWESTA.equals(kojiakSbtCd))
			{
				if (null == adChgFixDtm)
				{
					return true;
				}
			}
		}
		
		if (JKUStrConst.CD00474_UK_ZM.equals(kojiakStat))
		{
			// なにもしない
		}
		else if (JKUStrConst.CD00474_IRI_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_TAKNI_CHOSA_FIN_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_KOCOMP_KETTEI_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_TAKNI_CHOSA_RSV_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_KR_KAGI_KAIHAT_IRI_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_GEMBA_SAGYO_FIN_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.MANS_KOJIAK_STAT_CD_UK_ZM.equals(mansKojiakStatCd))
		{
			// 何もしない
		}
		else if (JKUStrConst.MANS_KOJIAK_STAT_CD_IRI_ZM.equals(mansKojiakStatCd))
		{
			// 何もしない
		}
		else if (JKUStrConst.MANS_KOJIAK_STAT_CD_KOCOMP_KETTEI_ZM.equals(mansKojiakStatCd))
		{
			// 何もしない
		}
		else
		{
			retBool = false;
		}
		
		return retBool;
		
	}
	
	/**
	 * 緊急出荷用仕掛判定
	 * @param ku0011Msg	工事案件データ
	 * @return	判定結果
	 */
	public static boolean isSkkrKojiak(CAANMsg ku0011Msg)
	{
		
		if (null == ku0011Msg)
		{
			return false;
		}
		
		boolean retBool = true;
		
		// 工事案件ステータス
		String kojiakStat = ku0011Msg.getString(KU0011ETMsg.KOJIAK_STAT);
		
		if (JKUStrConst.CD00474_IRI_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_TAKNI_CHOSA_FIN_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else
		{
			retBool = false;
		}
		
		return retBool;
	}
	
	/**
	 * 機器変更用仕掛判定
	 * @param ku0011Msg	工事案件データ
	 * @return	判定結果
	 */
	public static boolean isKikiHenkouSkkrKojiak(CAANMsg ku0011Msg)
	{
		
		if (null == ku0011Msg)
		{
			return false;
		}
		
		boolean retBool = true;
		
		// 最新基本工事フラグ
		String saishinFlg = ku0011Msg.getString(KU0011ETMsg.RCNT_KIHON_KOJI_FLG);
		// 工事案件ステータス
		String kojiakStat = ku0011Msg.getString(KU0011ETMsg.KOJIAK_STAT);
		// マンション工事案件状態コード
		String mansKojiakStatCd = ku0011Msg.getString(KU0011ETMsg.MANS_KOJIAK_STAT_CD);
		
		// 最新基本工事フラグ
		if (JKUStrConst.CD00882_RCNT_KIHON_KOJI.equals(saishinFlg))
		{
			return true;
		}
		
		if (JKUStrConst.CD00474_UK_ZM.equals(kojiakStat))
		{
			// なにもしない
		}
		else if (JKUStrConst.CD00474_IRI_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_TAKNI_CHOSA_FIN_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_KOCOMP_KETTEI_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_TAKNI_CHOSA_RSV_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_KR_KAGI_KAIHAT_IRI_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.MANS_KOJIAK_STAT_CD_UK_ZM.equals(mansKojiakStatCd))
		{
			// 何もしない
		}
		else if (JKUStrConst.MANS_KOJIAK_STAT_CD_IRI_ZM.equals(mansKojiakStatCd))
		{
			// 何もしない
		}
		else if (JKUStrConst.MANS_KOJIAK_STAT_CD_KOCOMP_KETTEI_ZM.equals(mansKojiakStatCd))
		{
			// 何もしない
		}
		else
		{
			retBool = false;
		}
		
		return retBool;
	}
	
	/**
	 * 住所変更確定処理時仕掛中の工事案件である場合trueを返す
	 * @param ku0011Msg	工事案件データ
	 * @return	判定結果
	 */
	public static boolean isSkkrKojiakJyusyoHenkou(CAANMsg ku0011Msg)
	{
		
		if (null == ku0011Msg)
		{
			return false;
		}
		
		boolean retBool = true;
		
		// 工事案件ステータス
		String kojiakStat = ku0011Msg.getString(KU0011ETMsg.KOJIAK_STAT);
		
		if (JKUStrConst.CD00474_UK_ZM.equals(kojiakStat))
		{
			// なにもしない
		}
		else if (JKUStrConst.CD00474_IRI_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_TAKNI_CHOSA_FIN_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_KOCOMP_KETTEI_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_TAKNI_CHOSA_RSV_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_KR_KAGI_KAIHAT_IRI_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_GEMBA_SAGYO_FIN_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else if (JKUStrConst.CD00474_KOJI_FIN_ZM.equals(kojiakStat))
		{
			// 何もしない
		}
		else
		{
			retBool = false;
		}
		
		return retBool;
		
	}
	
	/**
	 * 最新工事案件番号取得
	 * @param kojiAkNoList 工事案件番号リスト
	 * @return 最新基本工事工事案件番号リスト
	 * @throws CAANException
	 */
	public static List<String> getNewestKojiakNo(List<String> kojiAkNoList) throws CAANException
	{
		List<String> retList = new ArrayList<String>();
		
		// 引数の工事案件番号の件数分、サービス契約を取得する。
		for (String kojiakNo : kojiAkNoList)
		{
			// 工事案件ＰＫ検索
			CAANMsg msgKU0011 = getKU0011FindByPrimaryKeyE(kojiakNo);
			
			// 最新基本工事案件フラグをチェック
			String rcntKihonKojiFlg = msgKU0011.getString(KU0011ETMsg.RCNT_KIHON_KOJI_FLG);
			
			if(JKUStrConst.UM_YK.equals(rcntKihonKojiFlg))
			{
				retList.add(kojiakNo);
			}
		}
		
		return retList;
	}
	
	/**
	 * 指定された長さまで末尾に半角スペースを充填します。
	 * <br>
	 * @param arg0 調整する文字列
	 * @param arg1 調整する長さ
	 * @return String 充填後の文字列
	 */
	public static String padSpace(String arg0, int arg1) 
	{
		String sTarget = "";
		if (null != arg0)
		{
			sTarget = arg0;
		}
		
		if (arg1 <= 0) 
		{
			return "";
		}

		if (sTarget.length() < arg1) 
		{
			StringBuffer buf = new StringBuffer(sTarget);

			for (int i = buf.length(); i < arg1; ++i) 
			{
				buf.append(" ");
			}

			sTarget = buf.toString();
		}

		return sTarget;
	}
	
	/**
	 * 工事案件ＰＫ検索
	 * @param kojiakNo 工事案件番号
	 * @return 工事案件レコード
	 * @throws CAANException
	 */
	private static CAANMsg getKU0011FindByPrimaryKeyE(String kojiakNo) throws CAANException
	{
		// 工事案件 ロジカルエンティティクラス
		KU0011LE leKU0011 = new KU0011LE();
		
		// 工事案件のETメッセージを作成
		CAANMsg msgKU0011 = new CAANMsg(KU0011ETMsg.class.getName());
		
		// 工事案件番号
		msgKU0011.set(KU0011ETMsg.KOJIAK_NO, kojiakNo);
		
		// 対象のレコード取得
		return  leKU0011.findByPrimaryKeyE(msgKU0011);
	}
	
	/**
	 * 他システム（OPMS以外）の連携要否を要としてよいかの判定を行い、要否を返す。
	 * @param ku0011Msg		判定に使用する工事案件
	 * @param rnkiSys		連携システム
	 * @return	判定結果
	 */
	public static String getChgRnkiYh(CAANMsg ku0011Msg, String rnkiSys)
	{
		String retStr = JKUStrConst.KH_FAIL;
		String rnkiSbtCd = null;
		
		// ---連携種別コードの取得
		
		// 連携システムがFCDSの場合
		if (JKUStrConst.RNKI_SYSTEM_FCDS.equals(rnkiSys))
		{
			// FCDS連携種別コードを取得する
			rnkiSbtCd = ku0011Msg.getString(KU0011ETMsg.FCDS_RNKI_SBT_CD);
		}
		// 連携システムがGenesisの場合
		else if (JKUStrConst.RNKI_SYSTEM_GENESIS.equals(rnkiSys))
		{
			// Genesis連携種別コードを取得する
			rnkiSbtCd = ku0011Msg.getString(KU0011ETMsg.GENESIS_RNKI_SBT_CD);
		}
		
		// ---連携種別コードからの要否判定
		
		// 連携種別コードが連携済、工事完了済の場合
		if (JKUStrConst.CD00699_RENKEIZM.equals(rnkiSbtCd)
				|| JKUStrConst.CD00699_KOJI_FIN_RENKEIZM.equals(rnkiSbtCd))
		{
			// 連携要否を要とする
			retStr = JKUStrConst.KH_PSG;
		}
		
		return retStr;
	}
	
	/**
	 * 他システム（OPMS以外）の連携要否を要としてよいかの判定を行い、要否を返す。
	 * @param kojiakNo	判定に使用する工事案件を取得するための工事案件番号
	 * @param rnkiSys	連携システム
	 * @return	判定結果
	 * @throws CAANException
	 */
	public static String getChgRnkiYh(String kojiakNo, String rnkiSys) throws CAANException
	{
		// ---工事案件の取得
		
		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)
		{
			return JKUStrConst.KH_FAIL;
		}
		
		// ---連携要否の取得
		
		return getChgRnkiYh(ku0011Msg, rnkiSys);
	}
	
	/**
	 * 住変系の工事案件かどうかの判断
	 * @param kojiakSbtCd
	 * @return true:住変系 false:住変系でない
	 */
	public static boolean isAdChgeAk(String kojiakSbtCd)
	{
		// 工事案件種別コードが住所変更(新設)または住所変更(撤去)の場合
		if(JKUStrConst.CD00577_AD_CHG_NEWESTA.equals(kojiakSbtCd) || JKUStrConst.CD00577_AD_CHG_TEKKYO.equals(kojiakSbtCd))
		{
			return true;
		}
		
		return false;
	}

}
