/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCKSV902701CC
*   ソースファイル名：JCKSV902701CC.java
*   作成者          ：富士通
*   日付            ：2011年12月13日
*＜機能概要＞
*  対象会員のeoIDを変更する。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/12/13   FJ）三浦    新規作成
*　 v17.00.00   2015/07/30   FJ) 山岡    【ANK-2557-00-00_PMP再構築対応】eoID形式チェックを追加
*   v29.00.00   2017/03/08   FJ) 宮下    【ANK-2925-00-00】進捗へのeoID変更履歴の表示
*   v29.01.00	2017/04/14	 FJ) 宮下	 【OM-2017-0000414】eoID変更が実施できない
*   v37.00.00	2018/04/12	 FJ) 岩本	 【ANK-3326-00-00】お客さま情報仮登録状態でのエラー処理変更
*   v47.00.00   2019/11/07   FJ) 三原    【ANK-3706-00-00】ｅｏＩＤログインのセキュリティ強化対応
*   v48.00.00   2020/02/17   FJ) 美濃原  【ANK-3814-00-00】eoIDログインセキュリティ強化フォロー対応
**********************************************************************/

package com.fujitsu.futurity.bp.custom.common;

import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.*;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.*;
import static eo.common.constant.JCKStrConst.*;

import java.util.HashMap;
import java.util.Map;
import com.fujitsu.futurity.model.base.CAANMsg;



import com.fujitsu.futurity.bp.custom.constant.CKSV9027_CKSV9027OP_CKSV902701CC;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.ICommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import eo.common.constant.JKKStrConst;

import eo.ejb.cbs.cbsmsg.ECK0011B050CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011B050CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011B120CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011B120CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011C100CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0151D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECKA9020001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B004CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg;



/**
 * 対象会員のeoIDを変更する。
 * <BR>
 * @author 富士通
 */
public class JCKSV902701CC extends AbstractCommonComponent implements ICommonComponent
{
	/** 当CCの内部でしか使わないエラーコード */
	private static final String PMP_ERR_OTHER = "OTHER";
	
	
	//OM-2017-0000414 ADD START
	/** 進捗特記事項1の最大文字数 */
	private static final int MAX_LENGTH_PRG_TKJK_1 = 128;
	
	/** 進捗特記事項2の最大文字数 */
	private static final int MAX_LENGTH_PRG_TKJK_2 = 128;
	//OM-2017-0000414 ADD END

	/**
	 * eoID変更メイン処理。<br />
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite executeMain(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// 入力パラメータ取得
		Map inMap = (Map)param.getData(fixedText);
		String sysid = (String)inMap.get(CKSV9027_CKSV9027OP_CKSV902701CC.SYSID);
		String changedEoid = (String)inMap.get(CKSV9027_CKSV9027OP_CKSV902701CC.CHANGED_EOID);
		String pwdReminderQsCd = (String)inMap.get(CKSV9027_CKSV9027OP_CKSV902701CC.PWD_REMINDER_QS_CD);
		String pwdReminderAns = (String)inMap.get(CKSV9027_CKSV9027OP_CKSV902701CC.PWD_REMINDER_ANS);
		String ckUpdDtm = (String)inMap.get(CKSV9027_CKSV9027OP_CKSV902701CC.CK_UPD_DTM);
		String kkUpdDtm = (String)inMap.get(CKSV9027_CKSV9027OP_CKSV902701CC.KK_UPD_DTM);

		// リターンコード初期化
		String returnCd = PMP_NORMAL_END;

		String opeDate = JCCBPCommon.getOpeDate(null);

		//***************************************************
		// 内部で使用する変数の初期化
		//***************************************************
		String lastCustUpdDtm = null;
		String nowEoid = null;
		String nowPwdReminderQsCd = null;
		String nowPwdReminderAns = null; 
		String eoidChgeYmd = null;
		String shkEoid = null;
		boolean eoidChgFlg = true;
		// ANK-3706-00-00 ADD START
		// ■ANK-3814-00-00 連携電話番号（契約者電話番号、コンテンツ電話番号等）を設定
		String keishaTelno = "";
		// ANK-3706-00-00 ADD END

		//***************************************************
		// PMP連携用排他制御
		//***************************************************
		Map result = callECKA9020001(handle, param, sysid, "1");
		if (isSuccess(result))
		{
			String errFlg = getResultString(result, ECKA9020001CBSMsg.LOCK_ERR_FLG);
			if (!"0".equals(errFlg))
			{
				returnCd = PMP_ERR_EXCLUSION;
			}
		}
		else
		{
			returnCd = PMP_ERR_OTHER;
		}

		//***************************************************
		// 最終更新日時チェック
		//***************************************************
		String lastCkUpdDtm = null;
		String lastKkUpdDtm = null;
		if (JCKBPCommon.inArray(returnCd, PMP_NORMAL_END, PMP_ERR_EXCLUSION))
		{
			result = callECK0011B120(handle, param, sysid);
			if (isSuccess(result))
			{
				String mapKeyPre = ECK0011B120CBSMsg.ECK0011B120CBSMSG1LIST + "[0].";
				String chkCkUpdDtm = getResultString(result, mapKeyPre + ECK0011B120CBSMsg1List.CK_UPD_DTM);
				String chkKkUpdDtm = getResultString(result, mapKeyPre + ECK0011B120CBSMsg1List.KK_UPD_DTM);
				lastCustUpdDtm = chkCkUpdDtm;
				if ((!ckUpdDtm.equals(chkCkUpdDtm)) || (PMP_ERR_EXCLUSION.equals(returnCd)))
				{
					if ((chkCkUpdDtm  != null) && (chkKkUpdDtm != null))
					{
						lastCkUpdDtm = chkCkUpdDtm;
						lastKkUpdDtm = chkKkUpdDtm;
						returnCd = PMP_ERR_EXCLUSION;   // 更新日時が異なる時は排他エラー
					}
					else
					{
						returnCd = PMP_ERR_NODATA;   // 該当データが存在しない場合はデータ無しエラー
					}
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他エラー
			}
		}

		//***************************************************
		// お客様情報取得
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			result = callECK0011B050(handle, param, "1", sysid);
			if (isSuccess(result))
			{
				
				CAANMsg[] dataList = getResultMsgList(result, ECK0011B050CBSMsg.ECK0011B050CBSMSG1LIST);
				if ((dataList == null) || (dataList.length == 0))
				{
					returnCd = PMP_ERR_NODATA;   // データなし
				}
				else
				{
					String mapKeyPre = ECK0011B050CBSMsg.ECK0011B050CBSMSG1LIST + "[0].";
					nowEoid = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.EOID);
					nowPwdReminderQsCd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.PWD_REMINDER_QS_CD);
					nowPwdReminderAns = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.PWD_REMINDER_ANS);
					shkEoid = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.SHK_EOID);
					eoidChgeYmd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.EOID_CHGE_YMD);
					// ANK-3814-00-00 DEL START
					// ANK-3706-00-00 ADD START
					//keishaTelno = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.KEISHA_TELNO);
					// ANK-3706-00-00 ADD END
					// ANK-3814-00-00 DEL END

					// ANK-3814-00-00 ADD START
					// eoIDセキュリティ強化連携電話番号取得
					String wkTelno = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.KEISHA_TELNO);
					String memberSbtCd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.MEMBER_SBT_CD);
					keishaTelno = getSecurityRenkeiTelno(handle, param, sysid, memberSbtCd, wkTelno);
					// ANK-3814-00-00 ADD END
					
					//eoID＝初期eoIDの場合
					if(nowEoid.equals(shkEoid))
					{
						eoidChgFlg = false;
					}
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}
		
		//***************************************************
		// eoID更新日チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if(eoidChgFlg)
			{
				if (!checkUpdFailPrd(handle, param, opeDate, WORK_PARAM_ID_EOID_CHGFAIL_DAYS, eoidChgeYmd))
				{
					returnCd = PMP_ERR_EOID_TERM;   // eoID規定の期間以内の更新エラー
				}
			}
			
		}
		
		//***************************************************
		// eoID重複チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (!checkDupEoId(handle, param, changedEoid))
			{
				returnCd = PMP_ERR_EOID_DUP;   // eoID重複エラー
			}
		}
		
		//***************************************************
		// eoID禁則文字チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{	
			if (!checkEoidErrMoji(handle, param, changedEoid))
			{
				returnCd = PMP_ERR_EOID_PROHIBITION;   // eoID禁則文字チェックエラー
			}
		}

// ANK-3326-00-00 ADD START
		//***************************************************
		// 仮登録中チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			// 異動予約一覧照会SC呼出
			result = callEKK1681B001(handle, param, "1", "00089", "031", "04", sysid);
			if (isSuccess(result))
			{
				CAANMsg[] dataList = getResultMsgList(result, EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
				if (dataList != null && dataList.length > 0)
				{
					//返却パラメータの設定の処理を行う
					returnCd = PMP_ERR_KARI_ADD_CHU;   // 仮登録中エラー
				}
			}
			else {
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}
// ANK-3326-00-00 ADD END
		
		/*---< ANK-2557-00-00 add start >---*/
		//***************************************************
		// eoID半角英数字11チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{	
			if (!enNumber11Check(handle, param, changedEoid))
			{
				returnCd = PMP_ERR_EOID_PROHIBITION;   // eoID半角英数字11チェックエラー
			}
		}
		/*---< ANK-2557-00-00 add end >---*/

		//***************************************************
		// eoID変更
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			// eoID変更(エイジング終了実行指定)
			Map tmpResult = chgEoIdAndAgingEnd(handle, param, opeDate, sysid, changedEoid, nowEoid, lastCustUpdDtm, eoidChgFlg);
			result = (Map)tmpResult.get("result");
			if (isSuccess(result))
			{
				//更新時の更新年月日時分秒を取得する。
				lastCustUpdDtm = (String)tmpResult.get("upd_dtm_sysid");
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}
		
		//***************************************************
		// パスワードリマインダ変更
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			// ANK-3706-00-00 DEL START
//			if(pwdReminderQsCd != null || pwdReminderAns != null)
//			{
//				if((nowPwdReminderQsCd == null || nowPwdReminderAns == null) 
//						|| (!nowPwdReminderQsCd.equals(pwdReminderQsCd)) || !nowPwdReminderAns.equals(pwdReminderAns))
			// ANK-3706-00-00 DEL END
			// ANK-3706-00-00 ADD START
			// パスワードリマインダ用質問コードとパスワードリマインダ用回答がnullの場合には
			// ""で置き換えて処理する。
			if (pwdReminderQsCd == null)
			{
				pwdReminderQsCd = "";
			}
			if (pwdReminderAns == null)
			{
				pwdReminderAns = "";
			}
			
			// 現在のパスワードリマインダ用質問コード
			if (nowPwdReminderQsCd == null)
			{
				nowPwdReminderQsCd = "";
			}
			// 現在のパスワードリマインダ用回答
			if (nowPwdReminderAns == null)
			{
				nowPwdReminderAns = "";
			}
			// パスワードリマインダ用質問コードまたはパスワードリマインダ用回答が変更されている場合
			if (!pwdReminderQsCd.equals(nowPwdReminderQsCd) || !pwdReminderAns.equals(nowPwdReminderAns))
			// ANK-3706-00-00 ADD END
			{
				result = callECK0011C100(handle, param, sysid, pwdReminderQsCd, pwdReminderAns, lastCustUpdDtm);
				if (isError(result))
				{
					returnCd = PMP_ERR_OTHER;   // その他のエラー
				}
				else
				{
					//更新時の更新年月日時分秒を取得する。
					lastCustUpdDtm = getResultString(result, ECK0011C100CBSMsg.UPD_DTM);
				}
			}
			// ANK-3706-00-00 DEL START
//			}
			// ANK-3706-00-00 DEL END
		}
		
		//***************************************************
		// 指示書登録
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			// eoID変更連携用の指示書作成
			// ANK-3706-00-00 MOD START
			//Map sjishoMap = createShijisho(sysid, changedEoid);
			Map sjishoMap = createShijisho(sysid, changedEoid, keishaTelno);
			// ANK-3706-00-00 MOD END
			result = callECK0151D010Map(handle, param, sjishoMap);
			
			if (isError(result))
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}
		
		// ANK-2925-00-00 ADD START
		//***************************************************
		// 進捗登録
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			// SYSIDに紐付くサービス契約情報を取得
			//***************************************************
			// サービス契約一覧照会（SYSID）2
			//***************************************************
			result = callEKK0081B004(handle, param, "1", sysid);
			if (!isError(result))
			{
				CAANMsg[] ekk0081b004List = getResultMsgList(result, EKK0081B004CBSMsg.EKK0081B004CBSMSG1LIST);
				if (ekk0081b004List != null && ekk0081b004List.length > 0)
				{
					// サービス契約一覧照会で取得した件数分ループ処理を行う
					for (int i = 0; i < ekk0081b004List.length; i ++)
					{
						HashMap<String, Object> ekk0081b004Hash = ekk0081b004List[i].getMsgData();
						
						// サービス契約一覧照会（SYSID）2の結果よりサービス契約ステータスを取得
						String svcKeiStat = (String)ekk0081b004Hash.get(EKK0081B004CBSMsg1List.SVC_KEI_STAT);
						
						// 取得したサービス契約番号に紐付くサービス契約ステータスが照査済以降の場合進捗登録を行う
						if( 0 > JKKStrConst.CD00037_UK_ZM.compareTo(svcKeiStat))
						{
							//***************************************************
							// 進捗スキーマ登録
							//***************************************************
							// サービス契約一覧照会（SYSID）2の結果よりサービス契約番号を取得
							String svcKeiNo = (String)ekk0081b004Hash.get(EKK0081B004CBSMsg1List.SVC_KEI_NO);
							
							// 進捗スキーマ登録用のinputMap作成
							HashMap<String, Object> prgAddMap = createPrgAddMap(sysid
															, svcKeiNo
															, nowEoid
															, changedEoid);
							
							result = callEKK1091D010(handle, param, prgAddMap, "1");
							if (isError(result))
							{
								returnCd = PMP_ERR_OTHER;   // その他のエラー
								break;
							}
						}
					}
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}
		// ANK-2925-00-00 ADD END

		//***************************************************
		// 返却パラメータ設定
		//***************************************************

		// 最後に実行したSCの実行結果を取得
		result = getLastResult(param);

		// 下りコントロールマップのセット
		setResultCtrlData(param, result, fixedText);

		// SC実行エラーの場合は、結果に応じてリターンコードを設定
		if (PMP_ERR_OTHER.equals(returnCd)) {
			String scReturnCd = getReturnCode(result).toString();
			String scStatusCd = getStatus(result).toString();
			returnCd = ("0".equals(scReturnCd) && "1000".equals(scStatusCd)) ? PMP_ERR_PARAM : PMP_ERR_SYSTEM;
		}

		// 下りユーザデータマップのセット
		Map<String, Object> resultMap = new HashMap();
		resultMap.put(CKSV9027_CKSV9027OP_CKSV902701CC.RETURN_CD, returnCd);
		resultMap.put(CKSV9027_CKSV9027OP_CKSV902701CC.CK_UPD_DTM_RES, lastCkUpdDtm); // 返却最新更新日時(お客様)
		resultMap.put(CKSV9027_CKSV9027OP_CKSV902701CC.KK_UPD_DTM_RES, lastKkUpdDtm); // 返却最新更新日時(サービス契約)
		setResultUserData(param, fixedText, resultMap);

		//*************************************************
		// 処理結果の判定
		//*************************************************
		if (isError(result))
		{
			String errMsg = "eoID変更CCでエラーが発生しました(リターンコード：" + returnCd + ")";
			throw new CCException(errMsg, new Exception(errMsg));
		}

		return param;
	}

	/**
	 * eoID変更用の指示書パラメータ作成。<br />
	 * @param sysid
	 * @param eoid
	 * @param keishaTelno 連携電話番号（契約者電話番号、コンテンツ電話番号等）
	 * @return 指示書登録用パラメータ
	 */
	// ANK-3706-00-00 MOD START
	//private Map<String, Object> createShijisho(String sysid, String eoid)
	private Map<String, Object> createShijisho(String sysid, String eoid, String keishaTelno)
	// ANK-3706-00-00 MOD END
	{
		Map<String, Object> inMap = new HashMap<String, Object>();
		inMap.put(ECK0151D010CBSMsg.TRN_CD, SJISHO_TRN_CD_ADMIN_API);
		inMap.put(ECK0151D010CBSMsg.ERR_CNT, "0");
		inMap.put(ECK0151D010CBSMsg.TRAN_TRGT_SYSID, sysid);
		inMap.put(ECK0151D010CBSMsg.RSLT_FLG, "0");
		// ANK-3706-00-00 MOD START
		//inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "19");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "22");
		// ANK-3706-00-00 MOD END
		inMap.put(ECK0151D010CBSMsg.PARAMETER_1, ADMIN_SJISHO_PARAM1_UPD_PART);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_2, eoid);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_3, sysid);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_19, JCCBPCommon.getSysDateTime());
		// ANK-3706-00-00 ADD START
		inMap.put(ECK0151D010CBSMsg.PARAMETER_20, keishaTelno);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_21, "");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_22, "");
		// ANK-3706-00-00 ADD END
		return inMap;
	}

	// ANK-2925-00-00 ADD START
	/**
	 * 進捗スキーマ登録用のinputMap作成。<br />
	 * @param sysid ＳＹＳＩＤ
	 * @param svcKeiNo サービス契約番号
	 * @param nowEoid 変更前eoID
	 * @param changedEoid 変更後eoID
	 * @return 進捗スキーマ登録用用パラメータ
	 */
	private HashMap<String, Object> createPrgAddMap(String sysid, String svcKeiNo, String nowEoid, String changedEoid)
	{
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		inMap.put(EKK1091D010CBSMsg.SVC_KEI_NO, svcKeiNo);
		inMap.put(EKK1091D010CBSMsg.IDO_DIV, JKKStrConst.CD00576_CUST_INFO_CHG);
		inMap.put(EKK1091D010CBSMsg.IDO_DTM, JCCBPCommon.getSysDateTimeStamp());
		inMap.put(EKK1091D010CBSMsg.PRG_STAT, "1610");
		//OM-2017-0000414 DEL START
		//inMap.put(EKK1091D010CBSMsg.PRG_TKJK_1, "変更前eoID：" + nowEoid + "　変更後eoID：" + changedEoid );
		//OM-2017-0000414 DEL END
		
		//OM-2017-0000414 ADD START
		StringBuilder wkPrgTkjk1 = new StringBuilder("変更前eoID：" + nowEoid + "　変更後eoID：" + changedEoid); 
		String prgTkjk1 = wkPrgTkjk1.toString();
		String prgTkjk2 = wkPrgTkjk1.toString();
		// 進捗特記事項1の最大文字数を超えている場合は切る(全角・半角を区別せず文字数で判定)
		if (MAX_LENGTH_PRG_TKJK_1 < wkPrgTkjk1.length())
		{
			prgTkjk1 = wkPrgTkjk1.substring(0, MAX_LENGTH_PRG_TKJK_1);
			prgTkjk2 = wkPrgTkjk1.substring(128);
			inMap.put(EKK1091D010CBSMsg.PRG_TKJK_1, prgTkjk1);
			inMap.put(EKK1091D010CBSMsg.PRG_TKJK_2, prgTkjk2);
		}
		else
		{
			inMap.put(EKK1091D010CBSMsg.PRG_TKJK_1, "変更前eoID：" + nowEoid + "　変更後eoID：" + changedEoid );
		}
		//OM-2017-0000414 ADD END
		
		return inMap;
	}
	// ANK-2925-00-00 ADD END

	/**
	 * BPチェック用パラメータ作成。<br />
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return BPチェック用パラメータ
	 */
	@SuppressWarnings("unchecked")
	public HashMap getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	{
		// BPチェックはスキップする
		return JCKPmpScParamHenshu.createBpNotCheckParam();
	}

	/**
	 * ＢＰチェック結果を編集する。<br />
	 * @param param リクエストパラメータ
	 * @param caanMsgs サービスインターフェイス用のパラメータ配列
	 * @param returnCode リターンコード
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] caanMsgs, Integer returnCode) throws Throwable
	{
		return JCKPmpScParamHenshu.editErrorInfo(param, caanMsgs, returnCode);
	}
}
