/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbECH0101B010TPDA
*	ソースファイル名：JSYejbECH0101B010TPDA.java
*	作成者			：EKek0077
*	日付			：2011年12月01日
*＜機能概要＞
*	SQLFacility
*	テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ1.00.00
*	ｖ5.00.00	2013/07/18	FJ)早崎    【LT-2013-0000508】機能コード1,2,3のソート順判定条件修正
*	ｖ5.00.01	2013/07/26  FJ)河井    【TG1-2013-0000662】マスタ参照基準日対応
*	ｖ5.00.02	2013/08/03  FJ)小野    【LT-2013-0000640】部屋番号が同一の場合、出力内容が正しくない現象に対応(お客さまIDによるソート条件を追加)
*	ｖ5.00.03   2013/08/28  FJ)早崎    【OM-2013-0001014】請求内訳スキーマ参照のパーティション化対応
*	ｖ5.00.04   2013/09/04  FJ)小野    【随時-2013-000XXX1】請求ステータスが"仮計算"、"仮確定"のものは抽出しないように変更。
*	ｖ5.00.05   2013/09/11  FJ)早崎    【OM-2013-0001906】パーティション化された場合の、KEY_請求年月が"200212"以前日付対応
*	ｖ5.00.06   2013/10/20  FJ)小野    【OM-2013-0003186】請求書再発行の窓口の場合、消費税額(00900910201)を作成する対応に伴い、
*                                       GK_AM_DSPに登録されているものは、SAIKE_AMNT(00900910601)が存在しない場合、出力しないように変更。
*	ｖ6.00.00   2013/12/12  FJ)垣内    【OM-2013-0003340】マンションの請求契約のソート順修正
*	ｖ8.00.00	2013/12/25  FJ)小野    【ANK-1584-00-00】MVNO（本体）対応
*	ｖ8.00.01	2013/02/24  FJ)江森    【OM-2014-0000814】整理番号内同一料金コース別サービス契約番号の表示順不正対応
*	ｖ8.00.02	2014/02/24	FJ)小野    【ANK-1589-00-00】消費税に伴う料金施策により、ソート順変更。
*	ｖ9.00.00	2014/04/16	FJ)小野    【ANK-2054-00-00】eoスマートリンク改修(端末補償)により、出力項目追加、製造番号の表示方法変更。
*	ｖ9.00.01	2014/05/23	FJ)林      【IT1-2014-0000171】変更区分不正対応
*	ｖ16.00.00	2015/06/01	FJ)西面    【ANK-2480-00-00】新電力対応
*	ｖ25.00.00	2016/04/15	FJ)寺園    【ANK-2769-00-00】タブレット修理交換の機種制限解除対応
*	ｖ26.00.00	2016/10/14	FJ)清原    【OM-2016-0002205】割賦引継時の請求内訳の製造番号表示不備
*	ｖ36.00.00	2017/12/15	FJ)清原    【ANK-3296-00-00】標準工事費分割請求
*	ｖ37.00.00  2018/03/07  FJ)寺園    【ANK-3366-00-00】eo光設備卸対応
*	ｖ37.00.01  2018/05/30  FJ)寺園    【IT1-2018-0000076】eo光設備卸対応（請求内訳情報参照不具合対応）
*	ｖ41.00.00	2019/04/08  FJ) 大崎   【ANK-3500-00-00】テレビ親請求の請求内訳への物件名表示(埋込みコード="7" マンション名の編集処理追加)
*   v 45.00.00	2019/07/29  FJ)中原    【ANK-3636-00-00】料金項目出力名称.表示順の桁数変更対応
*	ｖ46.00.00	2019/10/09  FJ)麻生    【ANK-3586-00-00】隔月合算請求
*	ｖ66.00.00	2023/05/09  FJ)吉田    【ANK-4317-00-00】マイページの請求明細表示変更に伴う請求情報参照APIの作成
*	ｖ66.00.01	2023/06/19  FJ)吉田    【ST-2023-0000008】202306下旬〜202307上旬過渡期対応誤り
*	ｖ66.00.02	2023/06/29  FJ)吉田    【#82423】CHIFE528でシステムエラー
*	ｖ67.00.00  2023/06/14  FJ)藤本涼  【ANK-4401-00-00】インボイス対応
*	ｖ67.00.01	2023/07/02  FJ)吉田    【ANK-4401-00-00】インボイス対応
*	ｖ68.00.00  2023/10/03  FJ)升岡    【ANK-4475-00-00】インボイスSTEP2対応
*   ｖ71.00.00  2024/03/12  FJ)張      【ANK-4543-00-00】【eo定期】NTT卸対応：Step0
*   ｖ71.00.02  2024/05/16  FJ)張      【ANK-4543-00-00】【eo定期】NTT卸対応：Step0
*   ｖ73.00.00  2024/11/25  FJ)張      【ANK-4427-00-00】【eo定期】NTT卸対応：Step1
*    v73.00.01	2025/01/10  FJ)張      【IT1-2025-0000003】NTT卸対応：STEP1 
********************************************************************************/

package eo.ejb.cbs.sqlf;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.model.base.CAANConnectionMgr;
import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANJDBCUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.base.CAANSQLFacility;
import com.fujitsu.futurity.model.base.jcc.util.JCCStringConverter;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
import com.fujitsu.futurity.model.ejb.common.JSYejbConnection;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;
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.TemplateDBAccessHandler;

import eo.common.constant.JACStrConst;
import eo.common.util.JCHCommonFormatUtil;
import eo.common.util.JCRUtilCommon;
import eo.common.util.JPCUtilCommon;
import eo.ejb.cbm.entity.CH0101ETMsg;
import eo.ejb.cbm.entity.CH0101LE;
import eo.ejb.cbm.entity.CH0401ETMsg;
import eo.ejb.cbm.entity.CH0501ETMsg;
import eo.ejb.cbm.entity.CK0011ETMsg;
import eo.ejb.cbm.entity.KK0321ETMsg;
import eo.ejb.cbm.entity.ZM0321ETMsg;
import eo.ejb.cbm.entity.KK3511ETMsg;
import eo.ejb.cbm.entity.KK3521ETMsg;
import eo.ejb.cbm.entity.ZM0321LE;
import eo.ejb.cbs.cbsmsg.ECH0101B010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECH0101B010CBSMsg1List;
import eo.ejb.common.JCHModelCommon;
import eo.ejb.common.JPCModelCommon;

/**
*
*  テンプレートDBアクセス部品　ECH0101B010_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbECH0101B010TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	
	/**
	 * コンストラクタ
	 */
	public JSYejbECH0101B010TPDA()	{
	}
	
	/**
	*   ECH0101B010_SQLF<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return void
	*/
	public void invoke(CAANMsg inMsg,AgentDispatchContext inContext){
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;

		// パラメータ設定リスト
		List<Object> replaceListCnt = new ArrayList<Object>();

		/******************** 
		 * SQL文の作成
		 ********************/

		try{
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());

			// 運用日付
			String opeDate = (String)JPCModelCommon.getOpeDate(inMsg, inContext, null);
			String inKeySysCd = inMsg.getString(ECH0101B010CBSMsg.KEY_SYS_CD);
			String inKeySeikyNo = inMsg.getString(ECH0101B010CBSMsg.KEY_SEIKY_NO);
			String inKeySeikyKeiNo = inMsg.getString(ECH0101B010CBSMsg.KEY_SEIKY_KEI_NO);
			String inKeySeikyYm = inMsg.getString(ECH0101B010CBSMsg.KEY_SEIKY_YM);
			String inKeySeikySbtCd = inMsg.getString(ECH0101B010CBSMsg.KEY_SEIKY_SBT_CD);
			
			// 月末日
			String inKeyEndYmd = getUseEnd(inMsg, inContext, inKeySeikyYm);

			// APLConst.propertiesからパーティション有効区分を取得
			String patEnbVal = JCMAPLConstMgr.getString("PARTITION_ENV_FLG");
			
			// APLConst.propertiesからパーティション定数名切替基準年月を取得
			String pastPartSeikyYm = JCMAPLConstMgr.getString("PAST_PART_SEIKY_YM");
			
			// KEY_請求年月
			String keySeikyYm = inMsg.getString(ECH0101B010CBSMsg.KEY_SEIKY_YM);
			
			// 切替基準年月 ≧ KEY_請求年月場合
			if(pastPartSeikyYm.compareTo(keySeikyYm) >= 0)
			{
				// APLConst.propertiesからパーティション定数名を取得
				keySeikyYm = JCMAPLConstMgr.getString("PAST_PART_NM");
			}
			// ANK-4401-00-00 DEL START 過渡期対応削除
//			// ANK-4317-00-00 ADD START
//			// 料金説明設定有無フラグ
//			String feeExplanationUmFlg = getFeeExplanationUmFlg(inMsg, inContext, opeDate);
//			// ANK-4317-00-00 ADD END
			// ANK-4401-00-00 DEL END 過渡期対応削除

			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			// ANK-4317-00-00 ADD START
			if ( "7".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ))
			{
				sql_Buff.append(" SELECT ")
						.append("       SEIKY_NO ")
						.append("     , SEIKY_KEI_NO ")
						.append("     , SEIKY_YM ")
						.append("     , SEIRI_NO ")
						.append("     , SVC_KEI_NO ")
						.append("     , PRC_GRP_CD ")
						.append("     , PCRS_CD ")
						.append("     , PRC_SVC_CD ")
						.append("     , PRC_KMK_CD ")
						.append("     , MANSION_ID ")
						.append("     , CATID ")
						.append("     , MSBSN_ANKEN_KNRI_NO ")
						.append("     , PID ")
						.append("     , SKS_YO_KISN_PLACE_AD_RM_NO ")
						.append("     , AMNT ")
						.append("     , USE_STAYMD ")
						.append("     , USE_ENDYMD ")
						.append("     , GSAN_SEIKY_YM ")
						.append("     , AJST_FRG ")
						.append("     , UPD_DTM ")
						.append("     , PRC_KMK_NM ")
						.append("     , UMKM_KMK_CD ")
						.append("     , UMKM_PRC_GRP_CD ")
						.append("     , UMKM_PCRS_CD ")
						.append("     , UMKM_PRC_SVC_CD ")
						.append("     , UMKM_PRC_KMK_CD ")
						.append("     , UMKM_PRC_NM_MOJI_HUKA_CD ")
						.append("     , DSP_JUN ")
						.append("     , INDENT_CNT ")
						.append("     , SKS_NO_RAN_DSP_CTRL_FLG ")
						.append("     , SVKEI_NO_DSP_CTRL_FLG ")
						.append("     , SEIKY_KEI_NO_DSP_CTRL_FLG ")
						.append("     , SEIRI_NO_DSP_CTRL_FLG ")
						.append("     , MANS_ID_DSP_CTRL_FLG ")
						.append("     , ADRRM_DSP_CTRL_FLG ")
						.append("     , USE_PRD_DSP_CTRL_FLG ")
						.append("     , PRC_CD_DSP_CTRL_FLG ")
						.append("     , AMNT_DSP_COLUM_CNT ")
						.append("     , AMNT_HENSHU_PTN_CD ")
						.append("     , TAX_DIV_DSP_FLG ")
						.append("     , COMMENT_DSP_FLG ")
						.append("     , N_0_YEN_DTL_DSP_CTRL_FLG ")
						.append("     , KUGYO_INS_FLG ")
						.append("     , COMMENT_HENSHU_PATTERN_CD ")
						.append("     , SIKY_NYO_COMMENT ")
						.append("     , CHG_DIV ")
						.append("     , PRC_TEISE_KH ")
						.append("     , TEISEI_BTN_DSP_CTRL_FLG ")
						.append("     , SVC_DTL_SKBT_NO ")
						.append("     , SEIKY_UCWK_NO ")
						.append("     , KIKI_SEIZO_NO ")
						.append("     , TCHISHO_YO_TKMDL_NM ")
						.append("     , ORSJGS_CD ")
						.append("     , OROSI_PRC_BRI_CD ")
						.append("     , MSBSN_KRTG_BKN_NM ")
						.append("     , KAKGT_SEIKY_SKIP_FLG ")
						.append("     , PRC_SETMEI_CD ")
						.append("     , PRC_SETMEI ")
						// ANK-4401-00-00 ADD START
						.append("     , PRC_CHG_FLG ")
						// ANK-4401-00-00 ADD END
						.append(" FROM ( ");
			}
			// ANK-4317-00-00 ADD END
			sql_Buff.append(" SELECT ")
					.append("     CH0051.SEIKY_NO ")
					.append("     ,CH0051.SEIKY_KEI_NO ")
					.append("     ,CH0051.SEIKY_YM ")
					.append("     ,CH0101.SEIRI_NO ")
					.append("     ,CH0101.SVC_KEI_NO ")
					.append("     ,CH0101.PRC_GRP_CD ")
					.append("     ,CH0101.PCRS_CD ")
					.append("     ,CH0101.PRC_SVC_CD ")
					.append("     ,CH0101.PRC_KMK_CD ")
					.append("     ,KK0881.MANSION_ID ")
					.append("     ,KK0881.CATID ")
					.append("     ,KK0881.MSBSN_ANKEN_KNRI_NO ")
					.append("     ,KK0881.PID ")
					.append("     ,KK0881.SKS_YO_KISN_PLACE_AD_RM_NO ")
					.append("     ,CH0101.AMNT ")
					.append("     ,CH0101.USE_STAYMD ")
					.append("     ,CH0101.USE_ENDYMD ")
					.append("     ,CH0101.GSAN_SEIKY_YM ")
					.append("     ,CH0101.PRC_TEISE_ADD_FLG AS AJST_FRG ")
					.append("     ,CH0101.UPD_DTM ")
					.append("     ,CH0391.PRC_KMK_NM ")
					.append("     ,CH0391.UMKM_KMK_CD ")
					.append("     ,CH0391.UMKM_PRC_GRP_CD ")
					.append("     ,CH0391.UMKM_PCRS_CD ")
					.append("     ,CH0391.UMKM_PRC_SVC_CD ")
					.append("     ,CH0391.UMKM_PRC_KMK_CD ")
					.append("     ,CH0391.UMKM_PRC_NM_MOJI_HUKA_CD ")
					.append("     ,CH0391.DSP_JUN ")
					.append("     ,CH0391.INDENT_CNT ")
					.append("     ,CH0391.SKS_NO_RAN_DSP_CTRL_FLG ")
					.append("     ,CH0391.SVKEI_NO_DSP_CTRL_FLG ")
					.append("     ,CH0391.SEIKY_KEI_NO_DSP_CTRL_FLG ")
					.append("     ,CH0391.SEIRI_NO_DSP_CTRL_FLG ")
					.append("     ,CH0391.MANS_ID_DSP_CTRL_FLG ")
					.append("     ,CH0391.ADRRM_DSP_CTRL_FLG ")
					.append("     ,CH0391.USE_PRD_DSP_CTRL_FLG ")
					.append("     ,CH0391.PRC_CD_DSP_CTRL_FLG ")
					.append("     ,CH0391.AMNT_DSP_COLUM_CNT ")
					.append("     ,CH0391.AMNT_HENSHU_PTN_CD ")
					.append("     ,CH0391.TAX_DIV_DSP_FLG ")
					.append("     ,CH0391.COMMENT_DSP_FLG ")
					.append("     ,CH0391.N_0_YEN_DTL_DSP_CTRL_FLG ")
					.append("     ,CH0391.KUGYO_INS_FLG ")
					.append("     ,( ")
					.append("          SELECT ")
					.append("              CH0451.CHUSHK_HENSHU_PATTERN_CD ")
					.append("          FROM ")
					.append("              CH_M_CHUSHK_HENSHU CH0451 ")
					.append("          WHERE ")
					.append("              CH0451.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
					.append("              AND CH0451.PCRS_CD = CH0101.PCRS_CD ")
					.append("              AND CH0451.PRC_SVC_CD = CH0101.PRC_SVC_CD ")
					.append("              AND CH0451.PRC_KMK_CD = CH0101.PRC_KMK_CD ")
					.append("              AND CH0451.SYS_CD = ? ")
					.append("              AND ? BETWEEN CH0451.CHUSHK_HENSHU_TSTAYMD AND CH0451.CHUSHK_HENSHU_TENDYMD ")
					.append("              AND CH0451.MK_FLG = '0' ")
					.append("     ) AS COMMENT_HENSHU_PATTERN_CD ")
					.append("     ,( ")
					.append("          SELECT ")
					.append("              CH0451.SIKY_NYO_COMMENT ")
					.append("          FROM ")
					.append("              CH_M_CHUSHK_HENSHU CH0451 ")
					.append("          WHERE ")
					.append("              CH0451.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
					.append("              AND CH0451.PCRS_CD = CH0101.PCRS_CD ")
					.append("              AND CH0451.PRC_SVC_CD = CH0101.PRC_SVC_CD ")
					.append("              AND CH0451.PRC_KMK_CD = CH0101.PRC_KMK_CD ")
					.append("              AND CH0451.SYS_CD = ? ")
					.append("              AND ? BETWEEN CH0451.CHUSHK_HENSHU_TSTAYMD AND CH0451.CHUSHK_HENSHU_TENDYMD ")
					.append("              AND CH0451.MK_FLG = '0' ")
					.append("     ) AS SIKY_NYO_COMMENT ")
					.append("     ,( ")
					.append("          SELECT ")
					.append("              COUNT(1) ")
					.append("          FROM ");

					// パーティションが有効の場合
					if ( JACStrConst.PARTITION_ENABLED_YK.equals(patEnbVal))
					{
						sql_Buff.append("            CH_T_SEIKY_UCWK PARTITION(CH_T_SEIKY_UCWK_PT_")
								.append(keySeikyYm)
								.append(") CH0101_1 ");
					}
					// パーティションが無効の場合
					else
					{
						sql_Buff.append("              CH_T_SEIKY_UCWK CH0101_1 ");
					}

			sql_Buff.append("          WHERE ")
					.append("          CH0101_1.SEIKY_YM = CH0101.SEIKY_YM ")
					.append("          AND CH0101_1.SEIKY_NO = CH0101.SEIKY_NO ")
					.append("          AND CH0101_1.SEIKY_KEI_NO = CH0101.SEIKY_KEI_NO ")
					.append("          AND CH0101_1.SEIRI_NO = CH0101.SEIRI_NO ")
					.append("          AND CH0101_1.SVC_KEI_NO = CH0101.SVC_KEI_NO ")
					.append("          AND CH0101_1.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
					.append("          AND CH0101_1.PCRS_CD = CH0101.PCRS_CD ")
					.append("          AND CH0101_1.PRC_SVC_CD = CH0101.PRC_SVC_CD ")
					.append("          AND CH0101_1.PRC_KMK_CD = SUBSTR(CH0101.PRC_KMK_CD,1,9) || '30' ")
					.append("          AND CH0101_1.GSAN_SEIKY_YM = CH0101.GSAN_SEIKY_YM ") 
					.append("          AND NVL(CH0101_1.SVC_DTL_SKBT_NO,'0') = NVL(CH0101.SVC_DTL_SKBT_NO,'0') ")
					.append("          AND CH0101_1.SEIKY_UCWK_NO = CH0101.SEIKY_UCWK_NO  ")
					.append("          AND CH0101_1.MK_FLG = '0' ")
					.append("          AND ROWNUM <= 1 ")
					.append("     ) AS CHG_DIV ");

			replaceListCnt.add(inKeySysCd);
			replaceListCnt.add(opeDate);
			replaceListCnt.add(inKeySysCd);
			replaceListCnt.add(opeDate);

			if(!inMsg.isNull(ECH0101B010CBSMsg.KEY_WORK_KINO_SKBT_CD_PRC_TEISE)){
				sql_Buff.append("     ,( ")
						.append("           SELECT ")
						.append("               COUNT(1) ")
						.append("           FROM ")
						.append("               CH_M_PRC_KMK_CS_CHGE CH0401_SUB")
						.append("           WHERE ")
						.append("               CH0401_SUB.SYS_CD = ? ")
						.append("               AND CH0401_SUB.WORK_KINO_SKBT_CD = ? ")
						.append("               AND CH0401_SUB.CHSHT_CHG_CD = ? ")
						.append("               AND CH0401_SUB.PRC_GRP_CD = CH0101.PRC_GRP_CD")
						.append("               AND CH0401_SUB.PCRS_CD = CH0101.PCRS_CD")
						.append("               AND CH0401_SUB.PRC_SVC_CD = CH0101.PRC_SVC_CD")
						.append("               AND CH0401_SUB.PRC_KMK_CD = CH0101.PRC_KMK_CD")
						.append("               AND ? BETWEEN CH0401_SUB.PRC_KMK_CS_CHGE_TSTAYMD AND CH0401_SUB.PRC_KMK_CS_CHGE_TENDYMD ")
						.append("               AND CH0401_SUB.MK_FLG = '0'")
						.append("               AND ROWNUM <= 1 ")
						.append("      ) AS PRC_TEISE_KH");

				replaceListCnt.add(inKeySysCd);
				replaceListCnt.add(inMsg.getObject(ECH0101B010CBSMsg.KEY_WORK_KINO_SKBT_CD_PRC_TEISE));
				replaceListCnt.add(JACStrConst.CHSHT_CHG_CD_1);
				replaceListCnt.add(opeDate);
			} else {
				sql_Buff.append("    ,'0' AS PRC_TEISE_KH ");
			}

			if(!inMsg.isNull(ECH0101B010CBSMsg.KEY_WORK_KINO_SKBT_TEISE_BTN)){
				sql_Buff.append("     ,( ")
						.append("           SELECT ")
						.append("               COUNT(1) ")
						.append("           FROM ")
						.append("               CH_M_PRC_KMK_CS_CHGE CH0401_SUB")
						.append("           WHERE ")
						.append("               CH0401_SUB.SYS_CD = ? ")
						.append("               AND CH0401_SUB.WORK_KINO_SKBT_CD = ? ")
						.append("               AND CH0401_SUB.CHSHT_CHG_CD = ? ")
						.append("               AND CH0401_SUB.PRC_GRP_CD = CH0101.PRC_GRP_CD")
						.append("               AND CH0401_SUB.PCRS_CD = CH0101.PCRS_CD")
						.append("               AND CH0401_SUB.PRC_SVC_CD = CH0101.PRC_SVC_CD")
						.append("               AND CH0401_SUB.PRC_KMK_CD = CH0101.PRC_KMK_CD")
						.append("               AND ? BETWEEN CH0401_SUB.PRC_KMK_CS_CHGE_TSTAYMD AND CH0401_SUB.PRC_KMK_CS_CHGE_TENDYMD ")
						.append("               AND CH0401_SUB.MK_FLG = '0'")
						.append("               AND ROWNUM <= 1 ")
						.append("      ) AS TEISEI_BTN_DSP_CTRL_FLG");

				replaceListCnt.add(inKeySysCd);
				replaceListCnt.add(inMsg.getObject(ECH0101B010CBSMsg.KEY_WORK_KINO_SKBT_TEISE_BTN));
				replaceListCnt.add(JACStrConst.CHSHT_CHG_CD_1);
				replaceListCnt.add(opeDate);
			} else {
				sql_Buff.append("    ,'0' AS TEISEI_BTN_DSP_CTRL_FLG ");
			}

			sql_Buff.append("     ,CH0101.SVC_DTL_SKBT_NO ")
					.append("     ,CH0101.SEIKY_UCWK_NO ")
					.append("     ,KK0341.KIKI_SEIZO_NO ")
					.append("     ,( ")
					.append("         SELECT ")
					.append("             ZM0491.TCHISHO_YO_TKMDL_NM ")
					.append("         FROM ")
					.append("             ZM_M_TKMDL_KNRN_INFO ZM0491 ")
					.append("         WHERE ")
					.append("             ZM0491.TAKNKIKI_MODEL_CD = KK0341.TAKNKIKI_MODEL_CD ")
					.append("             AND ? BETWEEN ZM0491.TKMDL_KNRN_INFO_TSTAYMD AND ZM0491.TKMDL_KNRN_INFO_TENDYMD ")
					.append("             AND ZM0491.RSV_APLY_YMD || ZM0491.GENE_ADD_DTM = ")
					.append("             ( ")
					.append("                 SELECT MAX(ZM0491_GENE.RSV_APLY_YMD || ZM0491_GENE.GENE_ADD_DTM) AS ZM0491_MAX ")
					.append("                 FROM ")
					.append("                     ZM_M_TKMDL_KNRN_INFO ZM0491_GENE ")
					.append("                 WHERE ")
					.append("                     ZM0491_GENE.TAKNKIKI_MODEL_CD = ZM0491.TAKNKIKI_MODEL_CD  ")
					.append("                     AND ZM0491_GENE.RSV_APLY_YMD <= ? ")
					.append("                     AND ZM0491_GENE.MK_FLG='0' ")
					.append("             ) ")
					.append("             AND ZM0491.MK_FLG = '0' ")
					.append("     ) AS TCHISHO_YO_TKMDL_NM ")
					// v37.00.00 Add Start //
					.append("     ,CH0051.ORSJGS_CD ")
					.append("     ,CH0391.OROSI_PRC_BRI_CD ")
					// v37.00.00 Add End //
//v41.00.00 ANK-3500-00-00 Add Start
					.append("     ,KK0881.MSBSN_KRTG_BKN_NM ")
//v41.00.00 ANK-3500-00-00 Add End
			// ANK-4401-00-00 MOD START 過渡期対応削除
			// ANK-4317-00-00 MOD START
////					// ANK-3586-00-00 ADD START
////					.append("     ,CH0051.KAKGT_SEIKY_SKIP_FLG ")
////					// ANK-3586-00-00 ADD END
////					.append(" FROM ");
//					.append("     ,CH0051.KAKGT_SEIKY_SKIP_FLG ");
//			if ("1".equals(feeExplanationUmFlg))
//			{
//				sql_Buff.append("     ,'' AS PRC_SETMEI_CD ")
//						.append("     ,'' AS PRC_SETMEI ");
//			} else {
//				sql_Buff.append("     ,CH0391.PRC_SETMEI_CD ")
//						.append("     ,CH0391.PRC_SETMEI ");
//			}
//			sql_Buff.append(" FROM ");
//			// ANK-4317-00-00 MOD END
					.append("     ,CH0051.KAKGT_SEIKY_SKIP_FLG ")
					.append("     ,CH0391.PRC_SETMEI_CD ")
					.append("     ,CH0391.PRC_SETMEI ")
					// ANK-4401-00-00 ADD START
					.append("     ,CH0051.PRC_CHG_FLG ")
					// ANK-4401-00-00 ADD END
					.append(" FROM ");
					// ANK-4401-00-00 MOD END 過渡期対応削除

			replaceListCnt.add(inKeyEndYmd);
			replaceListCnt.add(inKeyEndYmd);

			// パーティションが有効の場合
			if ( JACStrConst.PARTITION_ENABLED_YK.equals(patEnbVal))
			{
				sql_Buff.append("            CH_T_SEIKY_UCWK PARTITION(CH_T_SEIKY_UCWK_PT_")
						.append(keySeikyYm)
						.append(") CH0101 ");
			}
			// パーティションが無効の場合
			else
			{
				sql_Buff.append("CH_T_SEIKY_UCWK CH0101 ");
			}

			sql_Buff.append("     INNER JOIN CH_T_SEIKY CH0051 ")
					.append("         ON CH0051.SEIKY_NO = CH0101.SEIKY_NO ")
					.append("         AND CH0051.SEIKY_YM = CH0101.SEIKY_YM ")
//IT1-2025-0000003 20250110 張 MOD START
					//.append("         AND CH0051.MK_FLG = '0' ")
					.append("         AND CH0051.MK_FLG = '0' ");
//IT1-2025-0000003 20250110 張 MOD END
//IT1-2025-0000003 20250110 張 DEL START
//					//ANK-4427-00-00 MOD START
//					//.append("     INNER JOIN CH_M_PRC_KMK_CS_CHGE CH0401 ")
//					.append("     INNER JOIN CH_M_PRC_KMK_CS_CHGE CH0401 ");
//			        //ANK-4427-00-00 MOD END
//IT1-2025-0000003 20250110 張 DEL END
//IT1-2025-0000003 20250110 張 MOD START
//					//ANK-4427-00-00 ADD START
//					if("8".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString())){
					if(!"8".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString()) && !"9".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString())){
//IT1-2025-0000003 20250110 張 MOD END
//IT1-2025-0000003 20250110 張 ADD START
						sql_Buff.append("     INNER JOIN CH_M_PRC_KMK_CS_CHGE CH0401 ")
//IT1-2025-0000003 20250110 張 ADD END
//IT1-2025-0000003 20250110 張 DEL START						
//						sql_Buff.append("         ON CH0401.PRC_KMK_CD = CH0101.PRC_KMK_CD ");
//					}
//					else{
//					//ANK-4427-00-00 ADD END
//IT1-2025-0000003 20250110 張 DEL END
//IT1-2025-0000003 20250110 張 MOD START					    
					    //ANK-4427-00-00 MOD START
					    //.append("         ON CH0401.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
						//sql_Buff.append("         ON CH0401.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
			            .append("         ON CH0401.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
//IT1-2025-0000003 20250110 張 MOD END
			            //ANK-4427-00-00 MOD END
					    .append("         AND CH0401.PCRS_CD = CH0101.PCRS_CD ")
					    .append("         AND CH0401.PRC_SVC_CD = CH0101.PRC_SVC_CD ")
//IT1-2025-0000003 20250110 張 MOD START
					    //ANK-4427-00-00 MOD START
					    //.append("         AND CH0401.PRC_KMK_CD = CH0101.PRC_KMK_CD ")
					    //.append("         AND CH0401.PRC_KMK_CD = CH0101.PRC_KMK_CD ");
					    .append("         AND CH0401.PRC_KMK_CD = CH0101.PRC_KMK_CD ")
//IT1-2025-0000003 20250110 張 MOD END
//IT1-2025-0000003 20250110 張 ADD START
					    .append("         AND CH0401.MK_FLG = '0' ");
//IT1-2025-0000003 20250110 張 ADD END						
			        //ANK-4427-00-00 ADD START
					}
					//ANK-4427-00-00 ADD END
//IT1-2025-0000003 20250110 張 DEL START					
//					//ANK-4427-00-00 MOD START
//					//.append("         AND CH0401.MK_FLG = '0' ")					
//			sql_Buff.append("         AND CH0401.MK_FLG = '0' ")
//			        ////ANK-4427-00-00 MOD END
//IT1-2025-0000003 20250110 張 DEL END
//IT1-2025-0000003 20250114 張 ADD START
					if("9".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString())){
						sql_Buff.append("     INNER JOIN CH_M_PRC_KMK_CS_CHGE CH0401 ")
						  .append("         ON CH0401.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
						  .append("         AND CH0401.PCRS_CD = CH0101.PCRS_CD ")
						  .append("         AND CH0401.MK_FLG = '0' ");
					}
//IT1-2025-0000003 20250114 張 ADD END
//IT1-2025-0000003 20250110 張 MOD START
					//.append("     LEFT JOIN ")
			sql_Buff.append("     LEFT JOIN ")
//IT1-2025-0000003 20250110 張 MOD END			
					.append("     ( ")
					.append("       SELECT ")
					.append("            CH0391_SUB.PRC_KMK_NM_SBT_CD ")
					.append("          , CH0391_SUB.PRC_GRP_CD ")
					.append("          , CH0391_SUB.PCRS_CD ")
					.append("          , CH0391_SUB.PRC_SVC_CD ")
					.append("          , CH0391_SUB.PRC_KMK_CD ")
					.append("          , CH0391_SUB.PRC_KMK_OPUT_NM_TSTAYMD ")
					.append("          , CH0391_SUB.PRC_KMK_OPUT_NM_TENDYMD ")
					.append("          , CH0391_SUB.PRC_KMK_NM ")
					.append("          , CH0391_SUB.UMKM_KMK_CD ")
					.append("          , CH0391_SUB.UMKM_PRC_GRP_CD ")
					.append("          , CH0391_SUB.UMKM_PCRS_CD ")
					.append("          , CH0391_SUB.UMKM_PRC_SVC_CD ")
					.append("          , CH0391_SUB.UMKM_PRC_KMK_CD ")
					.append("          , CH0391_SUB.UMKM_PRC_NM_MOJI_HUKA_CD ")
					.append("          , CH0391_SUB.DSP_JUN ")
					.append("          , CH0391_SUB.INDENT_CNT ")
					.append("          , CH0391_SUB.SKS_NO_RAN_DSP_CTRL_FLG ")
					.append("          , CH0391_SUB.SVKEI_NO_DSP_CTRL_FLG ")
					.append("          , CH0391_SUB.SEIKY_KEI_NO_DSP_CTRL_FLG ")
					.append("          , CH0391_SUB.SEIRI_NO_DSP_CTRL_FLG ")
					.append("          , CH0391_SUB.MANS_ID_DSP_CTRL_FLG ")
					.append("          , CH0391_SUB.ADRRM_DSP_CTRL_FLG ")
					.append("          , CH0391_SUB.USE_PRD_DSP_CTRL_FLG ")
					.append("          , CH0391_SUB.PRC_CD_DSP_CTRL_FLG ")
					.append("          , CH0391_SUB.AMNT_DSP_COLUM_CNT ")
					.append("          , CH0391_SUB.AMNT_HENSHU_PTN_CD ")
					.append("          , CH0391_SUB.TAX_DIV_DSP_FLG ")
					.append("          , CH0391_SUB.COMMENT_DSP_FLG ")
					.append("          , CH0391_SUB.N_0_YEN_DTL_DSP_CTRL_FLG ")
					.append("          , CH0391_SUB.KUGYO_INS_FLG ")
					.append("          , CH0391_SUB.MK_FLG ")
					// ANK-4401-00-00 MOD START 過渡期対応削除
					// v64.00.01 ST-2023-0000008 MOD START
////					// v37.00.00 Add Start //
////					.append("          , CH0391_SUB.OROSI_PRC_BRI_CD ")
////					// v37.00.00 Add End //
////					// ANK-4317-00-00 ADD START
////					.append("          , CH0391_SUB.PRC_SETMEI_CD ")
////					.append("          , CH0391_SUB.PRC_SETMEI ")
////					// ANK-4317-00-00 ADD END
////					.append("       FROM ")
//					.append("          , CH0391_SUB.OROSI_PRC_BRI_CD ");
//			if ("1".equals(feeExplanationUmFlg))
//			{
//				sql_Buff.append("     , '' AS PRC_SETMEI_CD ")
//						.append("     , '' AS PRC_SETMEI ");
//			} else {
//				sql_Buff.append("     , CH0391_SUB.PRC_SETMEI_CD ")
//						.append("     , CH0391_SUB.PRC_SETMEI ");
//			}
//			sql_Buff.append(" FROM ")
//					// v64.00.01 ST-2023-0000008 MOD END
					.append("          , CH0391_SUB.OROSI_PRC_BRI_CD ")
					.append("          , CH0391_SUB.PRC_SETMEI_CD ")
					.append("          , CH0391_SUB.PRC_SETMEI ")
					.append("       FROM ")
					// ANK-4401-00-00 MOD END 過渡期対応削除
					.append("            CH_M_PRC_KMK_OPUT_NM CH0391_SUB ")
					.append("       WHERE ")
					.append("             CH0391_SUB.PRC_KMK_NM_SBT_CD = ? ")
					.append("       AND   CH0391_SUB.PRC_KMK_OPUT_NM_TSTAYMD = ")
					.append("            ( SELECT MAX(CH0391_GENE.PRC_KMK_OPUT_NM_TSTAYMD) AS CH0391_MAX ")
					.append("              FROM   CH_M_PRC_KMK_OPUT_NM CH0391_GENE ")
					.append("              WHERE  CH0391_GENE.PRC_KMK_NM_SBT_CD = CH0391_SUB.PRC_KMK_NM_SBT_CD ")
					.append("              AND    CH0391_GENE.PRC_GRP_CD = CH0391_SUB.PRC_GRP_CD ")
					.append("              AND    CH0391_GENE.PCRS_CD = CH0391_SUB.PCRS_CD ")
					.append("              AND    CH0391_GENE.PRC_SVC_CD = CH0391_SUB.PRC_SVC_CD ")
					.append("              AND    CH0391_GENE.PRC_KMK_CD = CH0391_SUB.PRC_KMK_CD ")
					.append("              AND    CH0391_GENE.PRC_KMK_OPUT_NM_TSTAYMD <= ? ")
					.append("              AND    CH0391_GENE.MK_FLG = '0' ) ")
					.append("       ) CH0391 ")
					.append("           ON CH0391.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
					.append("           AND CH0391.PCRS_CD = CH0101.PCRS_CD ")
					.append("           AND CH0391.PRC_SVC_CD = CH0101.PRC_SVC_CD ")
					.append("           AND CH0391.PRC_KMK_CD = CH0101.PRC_KMK_CD ")
					.append("     LEFT JOIN ")
					.append("            ( SELECT ")
					.append("                  KK0081.SVC_KEI_NO ")
					.append("                 ,KK0081.SEIRI_NO ")
					.append("                 ,DECODE(KK2281.MANSION_ID, NULL, KK0881.MANSION_ID, KK2281.MANSION_ID) AS MANSION_ID ")
					.append("                 ,DECODE(KK2281.CATID, NULL, KK0881.CATID, KK2281.CATID) AS CATID ")
					.append("                 ,DECODE(KK2281.MSBSN_ANKEN_KNRI_NO, NULL, KK0881.MSBSN_ANKEN_KNRI_NO, KK2281.MSBSN_ANKEN_KNRI_NO) AS MSBSN_ANKEN_KNRI_NO ")
					.append("                 ,DECODE(KK2281.PID, NULL, KK0871.PID, KK2281.PID) AS PID ")
//v41.00.00 ANK-3500-00-00 Add Start
					.append("                 ,DECODE(KK2281.MSBSN_KRTG_BKN_NM, NULL, KK0891.MSBSN_KRTG_BKN_NM, KK2281.MSBSN_KRTG_BKN_NM) AS MSBSN_KRTG_BKN_NM ")
//v41.00.00 ANK-3500-00-00 Add End
					.append("                 ,( ")
					.append("                      SELECT")
					.append("                          KK0251.SKS_YO_KISN_PLACE_AD_RM_NO")
					.append("                      FROM ")
					.append("                          KK_T_SVKEI_KAISEN_UW KK0251 ")
					.append("                          INNER JOIN ")
					.append("                              KK_T_KAISEN_TG_SVKEI KK0241 ")
					.append("                              ON KK0241.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO ")
					.append("                      WHERE ")
					.append("                          KK0241.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
					.append("                          AND KK0251.GENE_ADD_DTM = ")
					.append("                          ( SELECT ")
					.append("                                MAX(KK0251_GENE.GENE_ADD_DTM) ")
					.append("                            FROM ")
					.append("                                KK_T_SVKEI_KAISEN_UW KK0251_GENE ")
					.append("                            WHERE ")
					.append("                                KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO ")
					.append("                                AND KK0251_GENE.MK_FLG = '0') ")
					.append("                          AND ROWNUM<=1 ")
					.append("                 ) SKS_YO_KISN_PLACE_AD_RM_NO ")
					.append("              FROM ")
					.append("                KK_T_SVC_KEI KK0081 ")
					.append("                LEFT JOIN ")
					.append("                       ( SELECT ")
					.append("                              KK2281.SVC_KEI_NO ")
					.append("                             ,KK0881.MANSION_ID ")
					.append("                             ,KK0881.CATID ")
					.append("                             ,KK0881.MSBSN_ANKEN_KNRI_NO ")
					.append("                             ,KK0871.PID ")
//v41.00.00 ANK-3500-00-00 Add Start
					.append("                             ,KK0891.MSBSN_KRTG_BKN_NM ")
//v41.00.00 ANK-3500-00-00 Add End
					.append("                          FROM ")
					.append("                              KK_T_SVC_KEI_DUMMY KK2281 ")
					.append("                              INNER JOIN KK_T_TK_HOSHIKI_KEI KK0891 ")
					.append("                                 ON KK0891.TK_HOSHIKI_KEI_NO = KK2281.REPLICA_MOTO_TK_HSK_KEI_NO ")
					.append("                                 AND KK0891.MK_FLG = '0' ")
					.append("                                       INNER JOIN KK_T_KAISEN_USE_KEI KK0881 ")
					.append("                                            ON KK0881.KAISEN_USE_KEI_NO = KK0891.KAISEN_USE_KEI_NO ")
					.append("                                            AND KK0881.MK_FLG = '0' ")
					.append("                                                    INNER JOIN KK_T_OWNR_KEI KK0871 ")
					.append("                                                       ON KK0871.OWNR_KEI_NO = KK0881.OWNR_KEI_NO ")
					.append("                                                       AND KK0871.MK_FLG = '0' ")
					.append("                          WHERE ")
					.append("                              KK2281.GENE_ADD_DTM = ")
					.append("                                   ( SELECT ")
					.append("                                         MAX(KK2281_GENE.GENE_ADD_DTM) ")
					.append("                                     FROM ")
					.append("                                         KK_T_SVC_KEI_DUMMY KK2281_GENE ")
					.append("                                     WHERE ")
					.append("                                         KK2281_GENE.SVC_KEI_NO = KK2281.SVC_KEI_NO ")
					.append("                                     AND KK2281_GENE.RSV_APLY_CD = '2' ")
					.append("                                     AND KK2281_GENE.MK_FLG = '0' ) ) KK2281 ")
					.append("                    ON KK0081.SVC_KEI_NO = KK2281.SVC_KEI_NO ")
					.append("                  LEFT JOIN KK_T_TK_HOSHIKI_KEI KK0891 ")
					.append("                    ON KK0891.TK_HOSHIKI_KEI_NO = KK0081.TK_HOSHIKI_KEI_NO ")
					.append("                    AND KK0891.MK_FLG = '0' ")
					.append("                            INNER JOIN KK_T_KAISEN_USE_KEI KK0881 ")
					.append("                               ON KK0881.KAISEN_USE_KEI_NO = KK0891.KAISEN_USE_KEI_NO ")
					.append("                               AND KK0881.MK_FLG = '0' ")
					.append("                                       INNER JOIN KK_T_OWNR_KEI KK0871 ")
					.append("                                          ON KK0871.OWNR_KEI_NO = KK0881.OWNR_KEI_NO ")
					.append("                                          AND KK0871.MK_FLG = '0' ")
					.append("              WHERE ");

			replaceListCnt.add(inMsg.getObject(ECH0101B010CBSMsg.KEY_PRC_KMK_NM_SBT_CD));
			replaceListCnt.add(inKeyEndYmd);

			// ＫＥＹ＿サービス契約番号がnullでない場合のみ条件に追加.
			if (!inMsg.isNull(ECH0101B010CBSMsg.KEY_SVC_KEI_NO))
			{
				sql_Buff.append("                  KK0081.SVC_KEI_NO = ? AND");

				replaceListCnt.add(inMsg.getObject(ECH0101B010CBSMsg.KEY_SVC_KEI_NO));
			}

			sql_Buff.append("                  KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ")
					.append("                      ( SELECT ")
					.append("                           MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ")
					.append("                         FROM ")
					.append("                             KK_T_SVC_KEI KK0081_GENE ")
					.append("                         WHERE ")
					.append("                             KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
					.append("                         AND KK0081_GENE.RSV_APLY_YMD <= ? ")
					.append("                         AND KK0081_GENE.RSV_APLY_CD = '2' ")
					.append("                         AND KK0081_GENE.MK_FLG = '0' ")
					.append("                      ) ")
					.append("              ) KK0881 ")
//ｖ25.00.00 2016/04/15 Mod Start
//					.append("         ON KK0881.SVC_KEI_NO = CH0101.SVC_KEI_NO ")
					.append("         ON KK0881.SVC_KEI_NO = CH0101.SVC_KEI_NO ");
			if ( "4".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ) ||
				// ANK-4317-00-00 MOD START
//					"6".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() )) {
				 	"6".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ) ||
				 	"7".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() )) {
				// ANK-4317-00-00 MOD END
			sql_Buff.append("     LEFT OUTER JOIN ")
					.append("     ( ")
					.append("         SELECT ")
					.append("             KK0341.KKTK_SVC_KEI_NO ")
					.append("             ,KK0341.KIKI_SEIZO_NO ")
					.append("             ,KK0341.TAKNKIKI_MODEL_CD ")
					.append("         FROM ")
					.append("             KK_T_KKTK_SVC_KEI KK0341 ")
					.append("         INNER JOIN KK_T_KAP_KEI KK2541 ")
					.append("         ON    KK2541.KKTK_SVC_KEI_NO =  KK0341.KKTK_SVC_KEI_NO ")
					.append("         AND   KK2541.ADD_JI_KIKI_CHG_NO = KK0341.KIKI_CHG_NO")
					.append("         WHERE ")
					.append("         (KK0341.KKTK_SVC_KEI_NO, KK0341.KIKI_CHG_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) = ( ")
					.append("             SELECT ")
					.append("                 KK0341_GENE.KKTK_SVC_KEI_NO, KK0341_GENE.KIKI_CHG_NO, MAX(KK0341_GENE.RSV_APLY_YMD || KK0341_GENE.GENE_ADD_DTM) AS KK0341_MAX ")
					.append("             FROM ")
					.append("                 KK_T_KKTK_SVC_KEI KK0341_GENE ")
					.append("             WHERE ")
					.append("                 KK0341_GENE.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ")
					.append("                 AND KK0341_GENE.KIKI_CHG_NO = KK0341.KIKI_CHG_NO ")
					.append("                 AND KK0341_GENE.RSV_APLY_YMD <= ? ")
					.append("                 AND KK0341_GENE.RSV_APLY_CD = '2' ")
					.append("                 AND KK0341_GENE.MK_FLG = '0' ")
					.append("             GROUP BY ")
					.append("                 KK0341_GENE.KKTK_SVC_KEI_NO, KK0341_GENE.KIKI_CHG_NO ")
					.append("         ) ")
					.append("         AND KK0341.KKTK_SVC_CD = 'C021' ")
					.append("         AND   (KK2541.KAP_KEI_NO, KK2541.RSV_APLY_YMD || KK2541.GENE_ADD_DTM) = ")
					.append("                  (SELECT KK2541_GENE.KAP_KEI_NO, MAX(KK2541.RSV_APLY_YMD || KK2541_GENE.GENE_ADD_DTM) AS KK2541_MAX ")
					.append("                   FROM   KK_T_KAP_KEI KK2541_GENE ")
					.append("                   WHERE  KK2541_GENE.KAP_KEI_NO = KK2541.KAP_KEI_NO ")
//ｖ26.00.00 2016/10/14 Del Start
//					.append("                   AND    KK2541_GENE.RSV_APLY_YMD <= ? ")
//ｖ26.00.00 2016/10/14 Del End
//ｖ26.00.00 2016/10/14 Add Start
					.append("                   AND    KK2541_GENE.RSV_APLY_CD = '2' ")
//ｖ26.00.00 2016/10/14 Add End
					.append("                   AND    KK2541_GENE.MK_FLG = '0' ")
					.append("                   GROUP BY KK2541_GENE.KAP_KEI_NO) ")
					.append("     ) KK0341  ")
					.append("     ON KK0341.KKTK_SVC_KEI_NO = CH0101.SVC_DTL_SKBT_NO ");
				
				replaceListCnt.add(opeDate);
				replaceListCnt.add(inKeyEndYmd);
//ｖ26.00.00 2016/10/14 Del Start
//				replaceListCnt.add(inKeyEndYmd);
//ｖ26.00.00 2016/10/14 Del End
			} else 
			{
//					.append("     LEFT OUTER JOIN ")
			sql_Buff.append("     LEFT OUTER JOIN ")
					.append("     ( ")
					.append("         SELECT ")
					.append("             KK0341.KKTK_SVC_KEI_NO ")
					.append("             ,KK0341.KIKI_SEIZO_NO ")
					.append("             ,KK0341.TAKNKIKI_MODEL_CD ")
					.append("         FROM ")
					.append("             KK_T_KKTK_SVC_KEI KK0341 ")
					.append("         WHERE ")
					.append("         (KK0341.KKTK_SVC_KEI_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) = ( ")
					.append("             SELECT ")
					.append("                 KK0341_GENE.KKTK_SVC_KEI_NO, MAX(KK0341_GENE.RSV_APLY_YMD || KK0341_GENE.GENE_ADD_DTM) AS KK0341_MAX ")
					.append("             FROM ")
					.append("                 KK_T_KKTK_SVC_KEI KK0341_GENE ")
					.append("             WHERE ")
					.append("                 KK0341_GENE.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ")
					.append("                 AND KK0341_GENE.RSV_APLY_YMD <= ? ")
					.append("                 AND KK0341_GENE.RSV_APLY_CD = '2' ")
					.append("                 AND KK0341_GENE.MK_FLG = '0' ")
					.append("             GROUP BY ")
					.append("                 KK0341_GENE.KKTK_SVC_KEI_NO ")
					.append("         ) ")
					.append("         AND KK0341.KKTK_SVC_CD = 'C021' ")
					.append("     ) KK0341  ")
					.append("     ON KK0341.KKTK_SVC_KEI_NO = CH0101.SVC_DTL_SKBT_NO ");
				replaceListCnt.add(opeDate);
				replaceListCnt.add(inKeyEndYmd);
			}

//			replaceListCnt.add(opeDate);
//			replaceListCnt.add(inKeyEndYmd);
//ｖ25.00.00 2016/04/15 Mod End

			// SQL文_個別部1
			if ( "1".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ) ) {
 				sql_Buff.append(" WHERE ");

 				// ＫＥＹ＿サービス契約番号がnullでない場合のみ条件に追加.
				if (!inMsg.isNull(ECH0101B010CBSMsg.KEY_SVC_KEI_NO))
				{
					sql_Buff.append("    CH0101.SVC_KEI_NO = ? AND ");

					replaceListCnt.add(inMsg.getObject(ECH0101B010CBSMsg.KEY_SVC_KEI_NO));
				}

				sql_Buff.append("     CH0101.SEIKY_YM = ?  ")
						.append("     AND CH0101.MK_FLG = '0' ")
						.append("     AND CH0051.SEIKY_KEI_NO = ? ")
						.append("     AND CH0051.SEIKY_YM = ? ")
						.append("     AND CH0051.SEIKY_SBT_CD = ? ")
						.append("     AND CH0401.SYS_CD = ? ")
						.append("     AND CH0401.WORK_KINO_SKBT_CD = ? ")
						.append("     AND CH0401.CHSHT_CHG_CD = ? ")
						.append("  ORDER BY ")
						.append("      CASE WHEN CH0101.SEIRI_NO = '              ' ")
						// ANK-3636-00-00 MOD START
						//.append("           THEN DECODE(SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1), '3', '2', SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1)) ")
						.append("           THEN DECODE(SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1), '3', '2', SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1)) ")
						// ANK-3636-00-00 MOD END
						.append("           ELSE '2' END ASC ")
						.append("    , CH0101.GSAN_SEIKY_YM DESC ")
						.append("    , CASE WHEN CH0101.SEIRI_NO = '              ' ")
						.append("           THEN '0' ")
						.append("           ELSE DECODE(SUBSTR(RPAD(CH0101.SEIRI_NO, 14, ' '), 11, 14), '    ', '1', '0') END ASC ")
						// ANK-3636-00-00 MOD START
						//.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1) = '4' ")
						.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1) = '4' ")
						// ANK-3636-00-00 MOD END
						.append("           THEN '              ' ")
						.append("           ELSE CH0101.SEIRI_NO END ASC ")
						// ANK-3636-00-00 MOD START
						//.append("    , SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 5) ASC ")
						.append("    , SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 5) ASC ")
						// ANK-3636-00-00 MOD END
						.append("    , CASE WHEN CH0101.PRC_GRP_CD = '99' ")
						.append("           THEN DECODE(CH0101.SVC_KEI_NO, '9999999999', 'zzzzz', DECODE(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, NULL, '     ', LPAD(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, 5, '0'))) ")
						.append("           ELSE DECODE(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, NULL, '     ', LPAD(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, 5, '0')) END ASC ")
						// ANK-3636-00-00 MOD START
						//.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1) = '2' ")
						.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1) = '2' ")
						// ANK-3636-00-00 MOD END
						.append("           THEN CH0101.SVC_KEI_NO ")
						.append("           ELSE '          ' END ")
						.append("    , CH0101.SVC_DTL_SKBT_NO ASC NULLS FIRST ")
						.append("    , CH0391.DSP_JUN ASC")
						.append("    , SUBSTR(CH0101.PRC_KMK_CD, 1, 1) DESC ")
						.append("    , CH0101.SEIKY_UCWK_NO ASC ");

				replaceListCnt.add(inKeySeikyYm);
				replaceListCnt.add(inKeySeikyKeiNo);
				replaceListCnt.add(inKeySeikyYm);
				replaceListCnt.add(inKeySeikySbtCd);
				replaceListCnt.add(inKeySysCd);
				replaceListCnt.add(inMsg.getObject(ECH0101B010CBSMsg.KEY_WORK_KINO_SKBT_CD));
				replaceListCnt.add(JACStrConst.CHSHT_CHG_CD_1);
			}

			// SQL文_個別部1
//ｖ25.00.00 2016/04/15 Mod Start
//			if ( "2".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ) ) {
			//ANK-4427-00-00 MOD START
			//if ( "2".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ) ||
			//"6".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() )) {
			if ( "2".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ) ||
					"6".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() )||
	//IT1-2025-0000003 20250110 張 ADD START
					"9".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() )||
	//IT1-2025-0000003 20250110 張 ADD END
					"8".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() )) {
				//ANK-4427-00-00 MOD END
//ｖ25.00.00 2016/04/15 Mod End
 				sql_Buff.append(" WHERE ");

 				// ＫＥＹ＿サービス契約番号がnullでない場合のみ条件に追加.
				if (!inMsg.isNull(ECH0101B010CBSMsg.KEY_SVC_KEI_NO))
				{
					sql_Buff.append("    CH0101.SVC_KEI_NO = ? AND ");

					replaceListCnt.add(inMsg.getObject(ECH0101B010CBSMsg.KEY_SVC_KEI_NO));
				}

				sql_Buff.append("     CH0101.SEIKY_YM = ? ")
						.append("     AND CH0101.MK_FLG = '0' ")
						.append("     AND CH0051.SEIKY_NO = ? ")
//IT1-2025-0000003 20250110 張 MOD START
						//.append("     AND CH0051.SEIKY_YM = ? ")
						.append("     AND CH0051.SEIKY_YM = ? ");
//IT1-2025-0000003 20250110 張 MOD END
//IT1-2025-0000003 20250110 張 ADD START
				if (!"8".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() )) {
//IT1-2025-0000003 20250110 張 ADD END
//IT1-2025-0000003 20250110 張 MOD START
					//.append("     AND CH0401.SYS_CD = ? ")
				 sql_Buff.append("     AND CH0401.SYS_CD = ? ")
//IT1-2025-0000003 20250110 張 MOD END
					     .append("     AND CH0401.WORK_KINO_SKBT_CD = ? ")
//IT1-2025-0000003 20250110 張 MOD START
					     //.append("     AND CH0401.CHSHT_CHG_CD = ? ")
					     .append("     AND CH0401.CHSHT_CHG_CD = ? ");
//IT1-2025-0000003 20250110 張 MOD END
//IT1-2025-0000003 20250110 張 ADD START					
				}
				if ("8".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() )) {
					sql_Buff.append("     AND CH0101.PRC_KMK_CD NOT LIKE ('2103%') ")
					        .append("     AND CH0101.PRC_KMK_CD NOT LIKE ('1103%') ");
				}
//IT1-2025-0000003 20250110 張 ADD END
//IT1-2025-0000003 20250110 張 MOD START
				//.append("  ORDER BY ")
				 sql_Buff.append("  ORDER BY ") 
//IT1-2025-0000003 20250110 張 MOD END
						.append("      CASE WHEN CH0101.SEIRI_NO = '              ' ")
						// ANK-3636-00-00 MOD START
						//.append("           THEN DECODE(SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1), '3', '2', SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1)) ")
						.append("           THEN DECODE(SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1), '3', '2', SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1)) ")
						// ANK-3636-00-00 MOD END
						.append("           ELSE '2' END ASC ")
						.append("    , CH0101.GSAN_SEIKY_YM DESC ")
						.append("    , CASE WHEN CH0101.SEIRI_NO = '              ' ")
						.append("           THEN '0' ")
						.append("           ELSE DECODE(SUBSTR(RPAD(CH0101.SEIRI_NO, 14, ' '), 11, 14), '    ', '1', '0') END ASC ")
						// ANK-3636-00-00 MOD START
						//.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1) = '4' ")
						.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1) = '4' ")
						// ANK-3636-00-00 MOD END
						.append("           THEN '              ' ")
						.append("           ELSE CH0101.SEIRI_NO END ASC ")
						// ANK-3636-00-00 MOD START
						//.append("    , SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 5) ASC ")
						.append("    , SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 5) ASC ")
						// ANK-3636-00-00 MOD END
						.append("    , CASE WHEN CH0101.PRC_GRP_CD = '99' ")
						.append("           THEN DECODE(CH0101.SVC_KEI_NO, '9999999999', 'zzzzz', DECODE(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, NULL, '     ', LPAD(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, 5, '0'))) ")
						.append("           ELSE DECODE(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, NULL, '     ', LPAD(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, 5, '0')) END ASC ")
						// ANK-3636-00-00 MOD START
						//.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1) = '2' ")
						.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1) = '2' ")
						// ANK-3636-00-00 MOD END
						.append("           THEN CH0101.SVC_KEI_NO ")
						.append("           ELSE '          ' END ")
						.append("    , CH0101.SVC_DTL_SKBT_NO ASC NULLS FIRST ")
						.append("    , CH0391.DSP_JUN ASC")
						.append("    , SUBSTR(CH0101.PRC_KMK_CD, 1, 1) DESC ")
						.append("    , CH0101.SEIKY_UCWK_NO ASC ");

				replaceListCnt.add(inKeySeikyYm);
				replaceListCnt.add(inKeySeikyNo);
				replaceListCnt.add(inKeySeikyYm);
//IT1-2025-0000003 20250110 張 ADD START
				if (!"8".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() )) {
//IT1-2025-0000003 20250110 張 ADD END
					replaceListCnt.add(inKeySysCd);
					replaceListCnt.add(inMsg.getObject(ECH0101B010CBSMsg.KEY_WORK_KINO_SKBT_CD));
					replaceListCnt.add(JACStrConst.CHSHT_CHG_CD_1);
//IT1-2025-0000003 20250110 張 ADD START
				}
//IT1-2025-0000003 20250110 張 ADD END				
			}

			// SQL文_個別部1
			// ANK-4317-00-00 MOD START
//			if ( "4".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ) ) {
			if ( "4".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ) ||
					"7".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ) ) {
			// ANK-4317-00-00 MOD END
				sql_Buff.append(" WHERE ");

 				// ＫＥＹ＿サービス契約番号がnullでない場合のみ条件に追加.
				if (!inMsg.isNull(ECH0101B010CBSMsg.KEY_SVC_KEI_NO))
				{
					sql_Buff.append("    CH0101.SVC_KEI_NO = ? AND ");

					replaceListCnt.add(inMsg.getObject(ECH0101B010CBSMsg.KEY_SVC_KEI_NO));
				}

				sql_Buff.append("     CH0101.SEIKY_YM = ?  ")
						.append("     AND CH0101.MK_FLG = '0' ")
						.append("     AND CH0051.SEIKY_KEI_NO = ? ")
						.append("     AND CH0051.SEIKY_YM = ? ")
						.append("     AND CH0051.SEIKY_SBT_CD = ? ")
						.append("     AND CH0051.SEIKY_STAT NOT IN (?, ?) ")
						.append("     AND CH0401.SYS_CD = ? ")
						.append("     AND CH0401.WORK_KINO_SKBT_CD = ? ")
						.append("     AND CH0401.CHSHT_CHG_CD = ? ")
						.append("  ORDER BY ") 
						.append("      CASE WHEN CH0101.SEIRI_NO = '              ' ")
						// ANK-3636-00-00 MOD START
						//.append("           THEN DECODE(SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1), '3', '2', SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1)) ")
						.append("           THEN DECODE(SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1), '3', '2', SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1)) ")
						// ANK-3636-00-00 MOD END
						.append("           ELSE '2' END ASC ")
						.append("    , CH0101.GSAN_SEIKY_YM DESC ")
						.append("    , CASE WHEN CH0101.SEIRI_NO = '              ' ")
						.append("           THEN '0' ")
						.append("           ELSE DECODE(SUBSTR(RPAD(CH0101.SEIRI_NO, 14, ' '), 11, 14), '    ', '1', '0') END ASC ")
						// ANK-3636-00-00 MOD START
						//.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1) = '4' ")
						.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1) = '4' ")
						// ANK-3636-00-00 MOD END
						.append("           THEN '              ' ")
						.append("           ELSE CH0101.SEIRI_NO END ASC ")
						// ANK-3636-00-00 MOD START
						//.append("    , SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 5) ASC ")
						.append("    , SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 5) ASC ")
						// ANK-3636-00-00 MOD END
						.append("    , CASE WHEN CH0101.PRC_GRP_CD = '99' ")
						.append("           THEN DECODE(CH0101.SVC_KEI_NO, '9999999999', 'zzzzz', DECODE(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, NULL, '     ', LPAD(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, 5, '0'))) ")
						.append("           ELSE DECODE(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, NULL, '     ', LPAD(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, 5, '0')) END ASC ")
						// ANK-3636-00-00 MOD START
						//.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1) = '2' ")
						.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1) = '2' ")
						// ANK-3636-00-00 MOD END
						.append("           THEN CH0101.SVC_KEI_NO ")
						.append("           ELSE '          ' END ")
						.append("    , CH0101.SVC_DTL_SKBT_NO ASC NULLS FIRST ")
						.append("    , CH0391.DSP_JUN ASC")
						.append("    , SUBSTR(CH0101.PRC_KMK_CD, 1, 1) DESC ")
						.append("    , CH0101.SEIKY_UCWK_NO ASC ");

				replaceListCnt.add(inKeySeikyYm);
				replaceListCnt.add(inKeySeikyKeiNo);
				replaceListCnt.add(inKeySeikyYm);
				replaceListCnt.add(inKeySeikySbtCd);
				replaceListCnt.add(JACStrConst.SEIKY_STAT_KR_CALC);
				replaceListCnt.add(JACStrConst.SEIKY_STAT_KR_FIX);
				replaceListCnt.add(inKeySysCd);
				replaceListCnt.add(inMsg.getObject(ECH0101B010CBSMsg.KEY_WORK_KINO_SKBT_CD));
				replaceListCnt.add(JACStrConst.CHSHT_CHG_CD_1);
			}

			// SQL文_個別部1
			if ( "5".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ) ) {
 				sql_Buff.append(" WHERE ");

 				// ＫＥＹ＿サービス契約番号がnullでない場合のみ条件に追加.
				if (!inMsg.isNull(ECH0101B010CBSMsg.KEY_SVC_KEI_NO))
				{
					sql_Buff.append("    CH0101.SVC_KEI_NO = ? AND ");

					replaceListCnt.add(inMsg.getObject(ECH0101B010CBSMsg.KEY_SVC_KEI_NO));
				}

				sql_Buff.append("     CH0101.SEIKY_YM = ? ")
						.append("     AND CH0101.MK_FLG = '0' ")
						.append("     AND CH0051.SEIKY_YM = ? ")
						.append("     AND CH0051.SEIKY_SBT_CD = ? ")
						.append("     AND CH0401.SYS_CD = ? ")
						.append("     AND CH0401.WORK_KINO_SKBT_CD = ? ")
						.append("     AND CH0401.CHSHT_CHG_CD = ? ");

				replaceListCnt.add(inKeySeikyYm);
				replaceListCnt.add(inKeySeikyYm);
				replaceListCnt.add(inKeySeikySbtCd);
				replaceListCnt.add(inKeySysCd);
				replaceListCnt.add(inMsg.getObject(ECH0101B010CBSMsg.KEY_WORK_KINO_SKBT_CD));
				replaceListCnt.add(JACStrConst.CHSHT_CHG_CD_1);
			}
			
			// ANK-4317-00-00 ADD START
			// SQL文_個別部1
			if ( "7".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ) ) {
				sql_Buff.append(" ) ")
						.append(" UNION ALL ")
						.append(" SELECT ")
						.append("       CH0051.SEIKY_NO ")
						.append("     , CH0051.SEIKY_KEI_NO ")
						.append("     , CH0051.SEIKY_YM ")
						.append("     , CH0101.SEIRI_NO ")
						.append("     , CH0101.SVC_KEI_NO ")
						.append("     , CH0101.PRC_GRP_CD ")
						.append("     , CH0101.PCRS_CD ")
						.append("     , CH0101.PRC_SVC_CD ")
						.append("     , CH0101.PRC_KMK_CD ")
						.append("     , NULL AS MANSION_ID ")
						.append("     , NULL AS CATID ")
						.append("     , NULL AS MSBSN_ANKEN_KNRI_NO ")
						.append("     , NULL AS PID ")
						.append("     , NULL AS SKS_YO_KISN_PLACE_AD_RM_NO ")
						.append("     , CH0101.AMNT ")
						.append("     , CH0101.USE_STAYMD ")
						.append("     , CH0101.USE_ENDYMD ")
						.append("     , CH0101.GSAN_SEIKY_YM ")
						.append("     , CH0101.PRC_TEISE_ADD_FLG AS AJST_FRG ")
						.append("     , CH0101.UPD_DTM ")
						.append("     , NULL AS PRC_KMK_NM ")
						.append("     , NULL AS UMKM_KMK_CD ")
						.append("     , NULL AS UMKM_PRC_GRP_CD ")
						.append("     , NULL AS UMKM_PCRS_CD ")
						.append("     , NULL AS UMKM_PRC_SVC_CD ")
						.append("     , NULL AS UMKM_PRC_KMK_CD ")
						.append("     , NULL AS UMKM_PRC_NM_MOJI_HUKA_CD ")
						.append("     , NULL AS DSP_JUN ")
						.append("     , NULL AS INDENT_CNT ")
						.append("     , NULL AS SKS_NO_RAN_DSP_CTRL_FLG ")
						.append("     , NULL AS SVKEI_NO_DSP_CTRL_FLG ")
						.append("     , NULL AS SEIKY_KEI_NO_DSP_CTRL_FLG ")
						.append("     , NULL AS SEIRI_NO_DSP_CTRL_FLG ")
						.append("     , NULL AS MANS_ID_DSP_CTRL_FLG ")
						.append("     , NULL AS ADRRM_DSP_CTRL_FLG ")
						.append("     , NULL AS USE_PRD_DSP_CTRL_FLG ")
						.append("     , NULL AS PRC_CD_DSP_CTRL_FLG ")
						.append("     , NULL AS AMNT_DSP_COLUM_CNT ")
						.append("     , NULL AS AMNT_HENSHU_PTN_CD ")
						.append("     , NULL AS TAX_DIV_DSP_FLG ")
						.append("     , NULL AS COMMENT_DSP_FLG ")
						.append("     , NULL AS N_0_YEN_DTL_DSP_CTRL_FLG ")
						.append("     , NULL AS KUGYO_INS_FLG ")
						.append("     , NULL AS COMMENT_HENSHU_PATTERN_CD ")
						.append("     , NULL AS SIKY_NYO_COMMENT ")
						.append("     , NULL AS CHG_DIV ")
						.append("     , NULL AS PRC_TEISE_KH")
						.append("     , NULL AS TEISEI_BTN_DSP_CTRL_FLG")
						.append("     , CH0101.SVC_DTL_SKBT_NO ")
						.append("     , CH0101.SEIKY_UCWK_NO ")
						.append("     , NULL AS KIKI_SEIZO_NO ")
						.append("     , NULL AS TCHISHO_YO_TKMDL_NM ")
						.append("     , CH0051.ORSJGS_CD ")
						.append("     , NULL AS OROSI_PRC_BRI_CD ")
						.append("     , NULL AS MSBSN_KRTG_BKN_NM ")
						.append("     , CH0051.KAKGT_SEIKY_SKIP_FLG ")
						.append("     , NULL AS PRC_SETMEI_CD ")
						.append("     , NULL AS PRC_SETMEI ")
						// ANK-4317-00-00 ADD START
						.append("     , CH0051.PRC_CHG_FLG ")
						// ANK-4317-00-00 ADD END
						.append(" FROM CH_T_SEIKY_UCWK CH0101 ")
						.append("     INNER JOIN CH_T_SEIKY CH0051 ")
						.append("         ON CH0051.SEIKY_NO = CH0101.SEIKY_NO ")
						.append("         AND CH0051.SEIKY_YM = CH0101.SEIKY_YM ")
						.append("         AND CH0051.MK_FLG = '0' ")
						.append("       WHERE ")
						.append("            CH0051.SEIKY_SBT_CD = '0'")
						.append("        AND CH0101.PRC_KMK_CD = '00900900601' ")
						.append("        AND CH0101.SEIKY_KEI_NO = ? ")
						.append("        AND CH0101.SEIKY_YM = ? ")
						.append("        AND CH0101.MK_FLG = '0' ");
				replaceListCnt.add(inKeySeikyKeiNo);
				replaceListCnt.add(inKeySeikyYm);
			}
			// ANK-4317-00-00 ADD END

			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			for (int idx = 0; idx < replaceListCnt.size(); idx++ )
			{
				CAANJDBCUtil.setParam(pstmt, idx+1, replaceListCnt.get(idx));
			}

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// ECH0101B010CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  ECH0101B010CBSMsg1List.SEIKY_NO
					, ECH0101B010CBSMsg1List.SEIKY_KEI_NO
					, ECH0101B010CBSMsg1List.SEIKY_YM
					, ECH0101B010CBSMsg1List.SEIRI_NO
					, ECH0101B010CBSMsg1List.SVC_KEI_NO
					, ECH0101B010CBSMsg1List.PRC_GRP_CD
					, ECH0101B010CBSMsg1List.PCRS_CD
					, ECH0101B010CBSMsg1List.PRC_SVC_CD
					, ECH0101B010CBSMsg1List.PRC_KMK_CD
					, ECH0101B010CBSMsg1List.MANSION_ID
					, ECH0101B010CBSMsg1List.CAT_ID
					, ECH0101B010CBSMsg1List.MSBSN_ANKEN_KNRI_NO
					, ECH0101B010CBSMsg1List.P_ID
					, ECH0101B010CBSMsg1List.KAISEN_PLACE_ADRRM
					, ECH0101B010CBSMsg1List.AMNT
					, ECH0101B010CBSMsg1List.USE_STAYMD
					, ECH0101B010CBSMsg1List.USE_ENDYMD
					, ECH0101B010CBSMsg1List.GSAN_SEIKY_YM
					, ECH0101B010CBSMsg1List.AJST_FLG
					, ECH0101B010CBSMsg1List.UPD_DTM
					, ECH0101B010CBSMsg1List.PRC_KMK_NM
					, ECH0101B010CBSMsg1List.UMKM_KMK_CD
					, ECH0101B010CBSMsg1List.UMKM_PRC_GRP_CD
					, ECH0101B010CBSMsg1List.UMKM_PCRS_CD
					, ECH0101B010CBSMsg1List.UMKM_PRC_SVC_CD
					, ECH0101B010CBSMsg1List.UMKM_PRC_KMK_CD
					, ECH0101B010CBSMsg1List.UMKM_PRC_NM_MOJI_HUKA_CD
					, ECH0101B010CBSMsg1List.DSP_JUN
					, ECH0101B010CBSMsg1List.INDENT_CNT
					, ECH0101B010CBSMsg1List.SKS_NO_RAN_DSP_CTRL_FLG
					, ECH0101B010CBSMsg1List.SVKEI_NO_DSP_CTRL_FLG
					, ECH0101B010CBSMsg1List.SEIKY_KEI_NO_DSP_CTRL_FLG
					, ECH0101B010CBSMsg1List.SEIRI_NO_DSP_CTRL_FLG
					, ECH0101B010CBSMsg1List.MANS_ID_DSP_CTRL_FLG
					, ECH0101B010CBSMsg1List.ADRRM_DSP_CTRL_FLG
					, ECH0101B010CBSMsg1List.USE_PRD_DSP_CTRL_FLG
					, ECH0101B010CBSMsg1List.PRC_CD_DSP_CTRL_FLG
					, ECH0101B010CBSMsg1List.AMNT_DSP_COLUM_CNT
					, ECH0101B010CBSMsg1List.AMNT_HENSHU_PTN_CD
					, ECH0101B010CBSMsg1List.TAX_DIV_DSP_FLG
					, ECH0101B010CBSMsg1List.COMMENT_DSP_FLG
					, ECH0101B010CBSMsg1List.N_0_YEN_DTL_DSP_CTRL_FLG
					, ECH0101B010CBSMsg1List.KUGYO_INS_FLG
					, ECH0101B010CBSMsg1List.COMMENT_HENSHU_PATTERN_CD
					, ECH0101B010CBSMsg1List.SIKY_NYO_COMMENT
					, ECH0101B010CBSMsg1List.CHG_DIV
					, ECH0101B010CBSMsg1List.PRC_TEISE_KH
					, ECH0101B010CBSMsg1List.TEISEI_BTN_DSP_CTRL_FLG
					, ECH0101B010CBSMsg1List.SVC_DTL_SKBT_NO
					, ECH0101B010CBSMsg1List.SEIKY_UCWK_NO
					, ECH0101B010CBSMsg1List.KIKI_SEIZO_NO
					, ECH0101B010CBSMsg1List.TCHISHO_YO_TKMDL_NM
					// v37.00.00 Add Start //
					, ECH0101B010CBSMsg1List.ORSJGS_CD
					, ECH0101B010CBSMsg1List.OROSI_PRC_BRI_CD
					// v37.00.00 Add End //
//v41.00.00 ANK-3500-00-00 Add Start
					, ECH0101B010CBSMsg1List.MSBSN_KRTG_BKN_NM
//v41.00.00 ANK-3500-00-00 Add End
					// ANK-3586-00-00 ADD START
					, ECH0101B010CBSMsg1List.KAKGT_SEIKY_SKIP_FLG
					// ANK-3586-00-00 ADD END
					// ANK-4317-00-00 ADD START
					, ECH0101B010CBSMsg1List.PRC_SETMEI_CD
					, ECH0101B010CBSMsg1List.PRC_SETMEI
					// ANK-4317-00-00 ADD END
					// ANK-4317-00-00 ADD START
					, ECH0101B010CBSMsg1List.PRC_CHG_FLG
					// ANK-4317-00-00 ADD END
			};
			
			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery,msgKeyList1,"eo.ejb.cbs.cbsmsg.ECH0101B010CBSMsg1List",0);

// 手修正箇所S
			/** 請求明細の編集を行う */
			ArrayList<CAANMsg> outAyList = editSeikyUcwk(inMsg, inContext, outMsg1, con1, opeDate);
			
			CAANMsg[] outMsg2 = (CAANMsg[]) outAyList.toArray(new CAANMsg[0]);
// 手修正個所E
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("ECH0101B010CBSMsg1List", outMsg2);
			
		} 
		catch(SQLException e) 
		{
			inMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		}
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					closeConnection(con1);
				}
			}
			catch(SQLException e)
			{
				inMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * 請求内訳明細の編集を行う
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param caOutMsg 検索した請求内訳明細リスト
	 * @param con コネクション
	 * @param opeDate 運用日付
	 * 
	 * @return outAyList 編集後の請求内訳明細リスト
	 * </p>
	 */
	private ArrayList<CAANMsg> editSeikyUcwk(CAANMsg inMsg, AgentDispatchContext inContext, CAANMsg[] caOutMsg, Connection con, String opeDate) throws SQLException{
		
		// 編集後の請求明細リスト
		ArrayList<CAANMsg> outAyList = new ArrayList<CAANMsg>();
		
		// 前回整理番号
		String sZenSeiriNo = "";
		
		// 前回合算請求年月
		String sZenGsanSeikyYm = "";
		
		// 業務機能識別コード取得
		String workParam[] = getWorkParam();
		
		//ANK4475-00-00 ADD START
		// 業務パラメータ取得
		String workParamCd[] = getWorkParamCd();
		//ANK4475-00-00 ADD END

		// 契約者名マップ
		HashMap<String, String> hmCustNmMap = new HashMap<String, String>();

// v37.00.00 Add Start //
		// 卸事業者の場合1行目が空白であれば出力させないように制御する、初期：false、1件出力後：trueにする
		boolean outCntFlg = false;
// v37.00.00 Add End //

		// 債権額情報を取得
		CAANMsg[] saikAmntArray = JCHModelCommon.getPrcKmkCsChge2(inMsg, inContext, true, JACStrConst.SAIK_AMNT);
		String saikAmntPrcKmkCd = "";
		if (saikAmntArray.length > 0)
		{
			saikAmntPrcKmkCd = saikAmntArray[0].getString(CH0401ETMsg.PRC_KMK_CD);
		}

		// 債権額が存在する場合、trueにする
		boolean saikAmntFlg = false;

		// 合計料金情報を取得
		CAANMsg[] totalAmntArray = JCHModelCommon.getPrcKmkCsChge2(inMsg, inContext, true, JACStrConst.GK_AM_DSP);

		HashMap<String, String> totalAmntNmMap = new HashMap<String, String>();
		for (int i = 0; i < totalAmntArray.length; i++)
		{
			totalAmntNmMap.put(totalAmntArray[i].getString(CH0401ETMsg.PRC_KMK_CD), null);
		}	
		
		// 請求内訳明細の編集
		for(CAANMsg outMsg : caOutMsg)
		{
			//AKN-4475-00-00_インボイス対応STEP2 MOD START
			// マンションオーナー向け表示制御フラグ 1：表示
			String MansionOwnerCtrlFlg = "1";
			
			if (!inMsg.isNull(ECH0101B010CBSMsg.KEY_MASION_OWNER_CTRL_FLG))
			{
				MansionOwnerCtrlFlg = inMsg.getString(ECH0101B010CBSMsg.KEY_MASION_OWNER_CTRL_FLG);
			}
			//料金グループコード＋料金項目コードの2〜8桁目
			String manOwnerCd = null;
			manOwnerCd = outMsg.getString(ECH0101B010CBSMsg1List.PRC_GRP_CD)+ "," + outMsg.getString(ECH0101B010CBSMsg1List.PRC_KMK_CD).substring(1, 8);
			
			if("1".equals(MansionOwnerCtrlFlg) || (!workParamCd[0].contains(manOwnerCd) && !workParamCd[1].contains(manOwnerCd))) 
			{	
				//AKN-4475-00-00_インボイス対応STEP2 MOD END
				// 料金項目コード
				String prcKmkCd = outMsg.getString(ECH0101B010CBSMsg1List.PRC_KMK_CD);

				// 債権額が存在する場合、trueにする
				if (prcKmkCd.equals(saikAmntPrcKmkCd))
				{
					saikAmntFlg = true;
				}

				// 業務機能識別コード"GK_AM_DSP"に定義されている場合、債権額が存在しない場合は出力しない
				// ソート順が債権額の方が先(若い)になっていることが前提で、この判定が可能である。
				// ソート順の前提が確定できない場合は、債権額が存在するかどうか判定した後に、さらに明細を読み込みながら判定する必要がある。
				if (totalAmntNmMap.containsKey(prcKmkCd) && !saikAmntFlg)
				{
					continue;
				}
			
// v37.00.00 Add Start //
            // 機能コード：4（請求書内訳情報参照API）の場合、卸先事業者コードが設定かつ卸料金分類コードが"3"の場合のみ出力する
			// v37.00.01 Del Start //
//			if ("4".equals(inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString()))
//			{
//				if (JCRUtilCommon.isNull(outMsg.getString(ECH0101B010CBSMsg1List.ORSJGS_CD)))
//				{
//					continue;
//				}
//				else if (!"3".equals(outMsg.getString(ECH0101B010CBSMsg1List.OROSI_PRC_BRI_CD)))
//				{
//					continue;
//				}
//			}
			// v37.00.01 Del End //
			// v37.00.01 Add Start //
			// ANK-4317-00-00 MOD START
//			if ("4".equals(inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString()) && 
//					!JCRUtilCommon.isNull(outMsg.getString(ECH0101B010CBSMsg1List.ORSJGS_CD)) &&
//					!"3".equals(outMsg.getString(ECH0101B010CBSMsg1List.OROSI_PRC_BRI_CD)))
				if (("4".equals(inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString()) ||
						"7".equals(inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString())) && 
						!JCRUtilCommon.isNull(outMsg.getString(ECH0101B010CBSMsg1List.ORSJGS_CD)) &&
						!"3".equals(outMsg.getString(ECH0101B010CBSMsg1List.OROSI_PRC_BRI_CD)))
				// ANK-4317-00-00 MOD START
				{
					continue;
				}
				// v37.00.01 Add End //
// v37.00.00 Add End //

				// 行区分を設定する。
				outMsg.set(ECH0101B010CBSMsg1List.GYO_DIV, JACStrConst.GYO_DIV_DETAIL);
				
				/** ０円明細表示制御フラグの判定 */
				String sN0yenDtlDspCtrlFlg = outMsg.getString(ECH0101B010CBSMsg1List.N_0_YEN_DTL_DSP_CTRL_FLG);
				if(JACStrConst.N_0_YEN_DTL_DSP_CTRL_FLG_HIDSP.equals(sN0yenDtlDspCtrlFlg))
				{
					// 金額が0円の場合、返却しない
					String sAmnt = outMsg.getString(ECH0101B010CBSMsg1List.AMNT);
					if("0".equals(sAmnt))
					{
						continue;
					}
				}
				
				/** 空行の編集 */
				String sKugyoInsFlg = outMsg.getString(ECH0101B010CBSMsg1List.KUGYO_INS_FLG);
				if(JACStrConst.KUGYO_INS_FLG_INS.equals(sKugyoInsFlg))
				{
					
// v37.00.00 Mod Start //
				// 卸事業者の場合1行目が空白であれば出力させないように制御する、初期：false、1件出力後：trueにする
				// ANK-4317-00-00 MOD START
//				// v37.00.01 Mod Start //
////				if (!("4".equals(inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString()) && outCntFlg == false))
//				if (!("4".equals(inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString()) && 
//						!JCRUtilCommon.isNull(outMsg.getString(ECH0101B010CBSMsg1List.ORSJGS_CD)) &&
//						outCntFlg == false))
//				// v37.00.01 Mod End //
					if (!("4".equals(inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString()) && 
					!JCRUtilCommon.isNull(outMsg.getString(ECH0101B010CBSMsg1List.ORSJGS_CD)) &&
					outCntFlg == false) &&
					!"7".equals(inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString()))
					// ANK-4317-00-00 MOD END
					{
						// 空行明細追加処理
						CAANMsg caKuGyoMsg = makeKuGyoIns();
						
						// 編集後の請求明細リストに格納する。
						outAyList.add(caKuGyoMsg);
					}
// v37.00.00 Mod End //
				}
				
				/** 整理番行表示制御フラグの編集 */
				// 整理番号表示制御フラグが"1":表示を対象に表示制御フラグの編集を行う。
				String sSeiriNoDspCtrlFlg = outMsg.getString(ECH0101B010CBSMsg1List.SEIRI_NO_DSP_CTRL_FLG);
				if("1".equals(sSeiriNoDspCtrlFlg))
				{
					
					// 整理番号を取得する。
					String sSeiriNo = outMsg.getString(ECH0101B010CBSMsg1List.SEIRI_NO);
					
					// 合算請求年月を取得する。
					String sGsanSeikyYm = outMsg.getString(ECH0101B010CBSMsg1List.GSAN_SEIKY_YM);
					
					// 整理番号と合算請求年月が同一の場合、表示制御フラグを"0":非表示に編集する。
					if(sZenSeiriNo.equals(sSeiriNo) && sZenGsanSeikyYm.equals(sGsanSeikyYm) )
					{
						outMsg.set(ECH0101B010CBSMsg1List.SEIRI_NO_DSP_CTRL_FLG, "0");
					}
					else
					{
						// 整理番号を退避する。
						sZenSeiriNo = sSeiriNo;
						
						// 合算請求年月を退避する。
						sZenGsanSeikyYm = sGsanSeikyYm;
					}
				}
				
				/** ご利用期間の編集 */
				String sUseKikan = editUseKikan(outMsg);
				// ご利用期間を設定する。
				outMsg.set(ECH0101B010CBSMsg1List.USE_KIKAN, sUseKikan);
				
				// 料金項目名称の取得
				String prcKmkNm = outMsg.getString(ECH0101B010CBSMsg1List.PRC_KMK_NM);
				
				/** インデントの編集 */
				String strIndCnt = outMsg.getString(ECH0101B010CBSMsg1List.INDENT_CNT);
				
				int iIndent = 0;
				if (strIndCnt != null)
				{
					iIndent = Integer.parseInt(strIndCnt);
				}
				// インデントを作成。
				StringBuffer sbIndent = new StringBuffer(10);
				for (int ix=0; ix<iIndent; ix++)
				{
					sbIndent.append("　");
				}
				
				// 料金項目名称を取得し、インデントを付加する
				StringBuffer sbIndent2 = new StringBuffer(sbIndent);
				prcKmkNm = sbIndent.append(prcKmkNm).toString();
				
				/** 埋め込み項目コードによる編集 */
				String strUmCd = outMsg.getString(ECH0101B010CBSMsg1List.UMKM_KMK_CD);
				
				// 埋め込み項目コードが"1"：合算請求年月の場合
				if (JACStrConst.UMEKOMI_CD_GSAN_SEIKY_YM.equals(strUmCd))
				{
					// 合算請求年月（月）を取得
					String gsanSeikyMM = outMsg.getString(ECH0101B010CBSMsg1List.GSAN_SEIKY_YM).substring(4, 6);
	
					// 前0は半角空白に置換
					if("0".equals(gsanSeikyMM.substring(0,1)))
					{
						gsanSeikyMM = gsanSeikyMM.replace("0", JACStrConst.SPACE_1);
					}
					// 埋め込み文字を合算請求年月（全角）で置換する
					prcKmkNm = prcKmkNm.replace("＄", JCCStringConverter.toWide(gsanSeikyMM) + JACStrConst.DAY_MON );
				}
			// 埋め込み項目コードが"2"：埋込み料金項目又は"6"：埋込み料金項目(単位を付加しない)の場合
//v36.00.00 ANK-3296-00-00 Mod Start
//			else if(JACStrConst.UMKM_KMK_CD_FULL.equals(strUmCd))
				else if(JACStrConst.UMKM_KMK_CD_FULL.equals(strUmCd) || JACStrConst.UMKM_KMK_CD_FULL_NO_TANI.equals(strUmCd))
//v36.00.00 ANK-3296-00-00 Mod End
						{
					try 
					{
							// 通信量用金額を取得する。
							String sTsryo = null;
							CAANMsg msgCH0101 = getCH0101(outMsg, inContext, outMsg);
							if(msgCH0101 != null){
								sTsryo =  msgCH0101.getString(CH0101ETMsg.AMNT);
							}
							
							// 埋込み料金名称文字付加コード
							String sUmkmPrcNmMojiHukaCd = outMsg.getString(ECH0101B010CBSMsg1List.UMKM_PRC_NM_MOJI_HUKA_CD);
//ｖ16.00.00 2015/06/01 Add Start
							String prcGrpCd = outMsg.getString(ECH0101B010CBSMsg1List.PRC_GRP_CD);
//ｖ16.00.00 2015/06/01 Add End
						// 通信量用金額編集共通部品の生成
							JCHCommonFormatUtil chComFmtUtil = new JCHCommonFormatUtil(con, opeDate);
						
//v36.00.00 ANK-3296-00-00 Mod Start
////ｖ16.00.00 2015/06/01 Mod Start
//						// 通信量用金額の編集を行う。
//						//ArrayList<String> list = chComFmtUtil.formatTushin(sTsryo, sUmkmPrcNmMojiHukaCd);
//						ArrayList<String> list = chComFmtUtil.formatTushinTaniTikan(sTsryo, sUmkmPrcNmMojiHukaCd,prcGrpCd);
////ｖ16.00.00 2015/06/01 Mod End					
							ArrayList<String> list = new ArrayList<String>(); 
							if(JACStrConst.UMKM_KMK_CD_FULL.equals(strUmCd))
							{
								// 通信量用金額の編集を行う。
								list = chComFmtUtil.formatTushinTaniTikan(sTsryo, sUmkmPrcNmMojiHukaCd,prcGrpCd);
							}
							else
							{
								// 標準工事費分割回数の編集を行う。
								list = chComFmtUtil.formatZenkaku(sTsryo);
							}
							
							// 通信量用金額を取得する。
							String sTsryoAmnt = list.get(1);
							
							// 埋込み料金名称文字を置換
							prcKmkNm = prcKmkNm.replace("＄", sTsryoAmnt);
		
							// 通信量桁あふれ付加文字を付加
							prcKmkNm = prcKmkNm.concat(list.get(0));
							}
//v36.00.00 ANK-3296-00-00 Mod End
					catch (Exception e) 
					{
						throw new SQLException(e);
					}
					
				}
				// 埋め込み項目コードが"3"：サービス詳細識別番号の場合
				else if(JACStrConst.UMKM_KMK_CD_SVC_DTL_SKBT_NO.equals(strUmCd))
				{
					try
					{
						// 料金項目名称の取得
						String svcDtlSkbtNo = outMsg.getString(ECH0101B010CBSMsg1List.SVC_DTL_SKBT_NO);
	
						// サービス詳細識別番号の編集を行う。
						String editTel = JCHCommonFormatUtil.formatSvcDtlSkbtNo(svcDtlSkbtNo);
	
						// 埋込み料金名称文字を置換
						prcKmkNm = prcKmkNm.replace("＄", editTel);
	
					} catch (Exception e) {
						throw new CAANRuntimeException(e);
					}
				}
				// 埋め込み項目コードが"4"：タブレット端末番号の場合
				else if(JACStrConst.UMKM_KMK_CD_SVC_DTL_SKBT_NO_TNAME_SIZO_NO.equals(strUmCd))
				{
					try
					{
						// 機器製造番号を取得し、全角に変換する。
						String kikiSeizoNo = "";
						if (!(outMsg.isNull(JACStrConst.ECH0101CBSMSG2LIST_KIKI_SEIZO_NO)))
						{
							kikiSeizoNo =
								JCCStringConverter.toWide((outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_KIKI_SEIZO_NO)));
						}
	
						// 埋込み料金名称文字を置換
						prcKmkNm = prcKmkNm.replace("＄", kikiSeizoNo);
	
						// #82423 20230629 ADD START
						// 機能コード7(請求情報照会)以外の場合、実施する。(呼出元で実施)
						if(!"7".equals( inMsg.getObject(ECH0101B010CBSMsg.FUNC_CODE).toString() ))
						{
						// #82423 20230629 ADD END
							// 通知書用宅内機器型式名を取得し、全角に変換する。
							String katasikiNm = "";
		
							if (!(outMsg.isNull(JACStrConst.ECH0101CBSMSG2LIST_TCHISHO_YO_TKMDL_NM)))
							{
								katasikiNm =
									JCCStringConverter.toWide((outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_TCHISHO_YO_TKMDL_NM)));
		
								// 編集元となった料金項目コードのインデント数に従いインデントする。
								katasikiNm = sbIndent2.append(katasikiNm).toString();
							}
		
							// 追加用のメッセージキャリアを生成。
							CAANMsg addMsg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101B010CBSMsg1List");
		
							// 行区分の設定
							addMsg.set(ECH0101B010CBSMsg1List.GYO_DIV, "02");
		
							// 埋め込み文字を置換したコメント内容を料金項目名称に設定する。
							addMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM, katasikiNm);
		
							// 編集後の請求明細リストに格納する。
							outAyList.add(addMsg);
						// #82423 20230629 ADD START
						}
						// #82423 20230629 ADD END
	
					} catch (Exception e) {
						throw new CAANRuntimeException(e);
					}
				}
//ｖ16.00.00 2015/06/01 Add Start
				else if (JACStrConst.UMKM_KMK_CD_SVC_DTL_SKBT_NO_KYOKYU_TKT_NO.equals(strUmCd))
				{	
					try
					{
						// サービス詳細識別番号を取得し、全角に変換する。
						String svcDtlSkbtNo = "";
						if (!(outMsg.isNull(ECH0101B010CBSMsg1List.SVC_DTL_SKBT_NO)))
						{
							svcDtlSkbtNo = JCCStringConverter.toWide((outMsg.getString(ECH0101B010CBSMsg1List.SVC_DTL_SKBT_NO)));
						}
						// 埋込み料金名称文字を置換
						prcKmkNm = prcKmkNm.replace("＄", svcDtlSkbtNo);
	
					} catch (Exception e) {
						throw new CAANRuntimeException(e);
					}
				}			
//ｖ16.00.00 2015/06/01 Add End

//v41.00.00 ANK-3500-00-00 Add Start
				else if (JACStrConst.UMKM_KMK_CD_MANSION_NM.equals(strUmCd))
				{	
					try
					{
						// マンション営業管理対象物件名を取得し、全角に変換する。
						String msbsnKrtgBknNm = "";
						if (!(outMsg.isNull(ECH0101B010CBSMsg1List.MSBSN_KRTG_BKN_NM)))
						{
							msbsnKrtgBknNm = JCCStringConverter.toWide((outMsg.getString(ECH0101B010CBSMsg1List.MSBSN_KRTG_BKN_NM)));
						}
						// 埋込み料金名称文字を置換
						prcKmkNm = prcKmkNm.replace("＄", msbsnKrtgBknNm);
	
					} catch (Exception e) {
						throw new CAANRuntimeException(e);
					}
				}
//v41.00.00 ANK-3500-00-00 Add End

				/** 部屋番号表示制御フラグの編集 */
				// 部屋番号表示制御フラグが"1":表示を対象に料金項目名称の編集を行う。
				String sAdrrmDspCtrlFlg = outMsg.getString(ECH0101B010CBSMsg1List.ADRRM_DSP_CTRL_FLG);
				if("1".equals(sAdrrmDspCtrlFlg))
				{
					StringBuffer roomNoAndCustNm = new StringBuffer();
					
					// ANK-4401-00-00 ADD START
					// 契約者名表示制御フラグ 1：表示
					String KeisyaNmDspCtrlFlg = "1";
					
					if (!inMsg.isNull(ECH0101B010CBSMsg.KEY_KEISYA_NM_DSP_CTRL_FLG))
					{
						KeisyaNmDspCtrlFlg = inMsg.getString(ECH0101B010CBSMsg.KEY_KEISYA_NM_DSP_CTRL_FLG);
					}
					// ANK-4401-00-00 ADD END
	
					String svcKeiNo = outMsg.getString(ECH0101B010CBSMsg1List.SVC_KEI_NO);
					if (svcKeiNo.equals(workParam[2]))
					{
						// ANK-4401-00-00 ADD START
						if ("0".equals(KeisyaNmDspCtrlFlg))
						{
							/** 未入居の場合 */
							// 部屋番号
							String roomNo = "";
							if (!JCRUtilCommon.isNull(workParam[3]))
							{
								roomNo =  workParam[3];
							}
		
							roomNoAndCustNm.append(workParam[0])                                //（部屋番号）
										   .append(JCCStringConverter.toWide(roomNo));          // ０００００
						}
						else
						{
						// ANK-4401-00-00 ADD END
							/** 未入居の場合 */
							// 部屋番号
							String roomNo = "";
							if (!JCRUtilCommon.isNull(workParam[3]))
							{
								roomNo =  workParam[3];
							}
		
							roomNoAndCustNm.append(workParam[0])                                //（部屋番号）
										   .append(JCCStringConverter.toWide(roomNo))           // ０００００
										   .append(JACStrConst.FULL_SPACE_1)
										   .append(workParam[4]);                               // ＊＊＊
						// ANK-4401-00-00 ADD START
						}
						// ANK-4401-00-00 ADD END
					}
					else
					{
						// ANK-4401-00-00 ADD START
						if ("0".equals(KeisyaNmDspCtrlFlg))
						{
							/** 入居の場合 */
							// 部屋番号
							String roomNo = "";
							if (!JCRUtilCommon.isNull(outMsg.getString(ECH0101B010CBSMsg1List.KAISEN_PLACE_ADRRM)))
							{
								roomNo =  outMsg.getString(ECH0101B010CBSMsg1List.KAISEN_PLACE_ADRRM);
							}
							// 全角空白文字充填
							roomNo =  JPCUtilCommon.fillSpace(roomNo, Integer.parseInt(workParam[1]), true);
	
							roomNoAndCustNm.append(workParam[0])                                //（部屋番号）
										   .append(JCCStringConverter.toWide(roomNo)) ;
						}
						else
						{
						// ANK-4401-00-00 ADD END
							/** 入居の場合 */
							// 部屋番号
							String roomNo = "";
							if (!JCRUtilCommon.isNull(outMsg.getString(ECH0101B010CBSMsg1List.KAISEN_PLACE_ADRRM)))
							{
								roomNo =  outMsg.getString(ECH0101B010CBSMsg1List.KAISEN_PLACE_ADRRM);
							}
							// 全角空白文字充填
							roomNo =  JPCUtilCommon.fillSpace(roomNo, Integer.parseInt(workParam[1]), true);
		
							// 契約者名
							String custNm = getCustName(inMsg, inContext, hmCustNmMap, opeDate, svcKeiNo);
		
							roomNoAndCustNm.append(workParam[0])                                //（部屋番号）
										   .append(JCCStringConverter.toWide(roomNo)) 
										   .append(JACStrConst.FULL_SPACE_1)
										   .append(custNm); 
						}
					}
					prcKmkNm = roomNoAndCustNm.toString();
				}
				
//ANK-4543-00-00 ADD START
				/**（NTT卸契約）料金名称の置換 */
				
				//NTT卸契約判定フラグ
				boolean NTTorsFlg = false;
				
				//NTT卸サービス種別
				String NttorsSvcSbt = "";
				
				//料金グループコード
				String strGrpCd = "";
				
				//NTT卸契約エラーフラグ
				String nttErrFlg = "";
				
				//NTT卸契約判定のため、料金グループコードを取得する
				 strGrpCd = outMsg.getString(ECH0101B010CBSMsg1List.PRC_GRP_CD);
				 
				//料金項目コードを取得する
				String PrcKmkCd =  outMsg.getString(ECH0101B010CBSMsg1List.PRC_KMK_CD);
							
				//NTT卸名称MAP
				CAANMsg[] retLists = null;
								
				//料金グループコード　"16"（ｅｏメールアドレス）の場合、NTT卸契約の判定を行う。
				if("16".equals(strGrpCd) && ("01900801601".equals(PrcKmkCd) || "00900701601".equals(PrcKmkCd)))
				{
							
					//請求年月取得
					String SeiKyuym = outMsg.getString(ECH0101B010CBSMsg1List.SEIKY_YM);
					
					//請求年月の末日を算出する
					String seikyuEndD = getEndOfMonth(SeiKyuym.substring(0, 6));
					
					//料金グループ計の場合
					if("00900701601".equals(PrcKmkCd)){
						//請求契約番号
						String seikyKeiNo = outMsg.getString(ECH0101B010CBSMsg1List.SEIKY_KEI_NO);
						CAANMsg[] kakinSvcKeiNoLists = getKaKinSvcKeiNo(outMsg, inContext, seikyKeiNo);
						for(int i = 0; i < kakinSvcKeiNoLists.length; i++){
							String kakinSvcKeiNo = kakinSvcKeiNoLists[i].getString(KK0321ETMsg.SVC_KEI_NO);
							//NTT卸契約に指定されたサービス契約番号が存在するかどうかを検索する。
							 retLists = getNttorsSvcSbt(outMsg, inContext, kakinSvcKeiNo, seikyuEndD);
							 if(retLists.length > 0){
								 break;
							 }
						}				
					}
					//ID番号計の場合
					else{
						//サービス契約番号を取得する
						String svcKeiNo = outMsg.getString(ECH0101B010CBSMsg1List.SVC_KEI_NO);
						//NTT卸契約に指定されたサービス契約番号が存在するかどうかを検索する。
						 retLists = getNttorsSvcSbt(outMsg, inContext, svcKeiNo, seikyuEndD);
					}
					

					// NTT卸契約に指定されたサービス契約番号が複数件存在する場合
					if(retLists.length > 1){
						
						//最新（コース変更後）のNTT卸サービス種別を取得する
						NttorsSvcSbt = retLists[0].getString(KK3511ETMsg.NTTORS_SVC_SBT);	
						NTTorsFlg = true;
						//1:エラーを設定する。
						nttErrFlg ="1";						
						
					}					
					else if(retLists.length == 1){
							
						// NTT卸契約存在する場合
						NttorsSvcSbt = retLists[0].getString(KK3511ETMsg.NTTORS_SVC_SBT);				   
						NTTorsFlg = true;						
					}
					else{
																							
						NTTorsFlg = false;
					}														
				}
				outMsg.set(ECH0101B010CBSMsg1List.NTT_ERR_FLG, nttErrFlg);	
				
				//NTT卸契約の場合、料金名称を置換する。
				if(NTTorsFlg){
					
					//NTT卸契約用料金名称マップ
					HashMap<String, String> NTTPrcKmkNmMap = null;
														
					//NTT卸料金コースから指定されたNTT卸サービス種別の料金名称を取得する。
					 NTTPrcKmkNmMap = getNttPrcKmkNm(outMsg, inContext, opeDate, NttorsSvcSbt);
						
					//ID番号計の場合
					if("01900801601".equals(PrcKmkCd) && NTTPrcKmkNmMap != null ){	
							
						//ID番号計の料金名称を取得する
						prcKmkNm =  NTTPrcKmkNmMap.get(KK3521ETMsg.ID_NO_KEI);
													
					}
						
					//料金内訳料金グループ計の場合
					if("00900701601".equals(PrcKmkCd) && NTTPrcKmkNmMap != null){
							
						//料金内訳料金グループ計の料金名称を取得する
						prcKmkNm =  NTTPrcKmkNmMap.get(KK3521ETMsg.PRU_PRGP_KEI);
					}											
				}								
//ANK-4543-00-00 ADD END	

				// 料金項目名称の設定
				outMsg.set(ECH0101B010CBSMsg1List.PRC_KMK_NM, prcKmkNm);
				
				// 編集後の請求明細リストに格納する。
				outAyList.add(outMsg);
				
				/** コメント行の編集 */
				String sComDspFlg = outMsg.getString(ECH0101B010CBSMsg1List.COMMENT_DSP_FLG);
				if(JACStrConst.DSP_FLG_DSP.equals(sComDspFlg)){
					
					// コメント行追加処理
					CAANMsg caComDspMsg = makeCommntIns(outMsg);
					
					// 編集後の請求明細リストに格納する。
					outAyList.add(caComDspMsg);
				}
// v37.00.00 Add Start //
// 1件目が出力された場合、trueにする
				outCntFlg = true;
// v37.00.00 Add End //
			}
		}

		return outAyList;
	}
	
	/**
	 * <p>
	 * 空行明細追加処理
	 * 空行明細を追加する。
	 * @param outAyList 返却請求明細リスト
	 * </p>
	 */
	private CAANMsg makeKuGyoIns(){
		
		CAANMsg retMsg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101B010CBSMsg1List");
		
		// 行区分の設定
		retMsg.set(ECH0101B010CBSMsg1List.GYO_DIV, "01");
		
		return retMsg;
	}
	
	/**
	 * <p>
	 * コメント行明細追加処理
	 * コメント行明細を追加する。
	 * @param outAyList 返却請求明細リスト
	 * </p>
	 */
	private CAANMsg makeCommntIns(CAANMsg msg){
		
		// 注釈編集．編集パターンを取得
		String sHSPtnCd = msg.getString(ECH0101B010CBSMsg1List.COMMENT_HENSHU_PATTERN_CD);
		
		// 注釈編集．コメントを取得する。
		String sSKNyCmt = msg.getString(ECH0101B010CBSMsg1List.SIKY_NYO_COMMENT);
		
		// コメント行
		CAANMsg outMsg2 = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101B010CBSMsg1List");
		
		// 編集パターンの判定
		if("0".equals(sHSPtnCd))
		{
			// 料金項目名称にコメントを設定する。
			outMsg2.set(ECH0101B010CBSMsg1List.PRC_KMK_NM, sSKNyCmt);
			
			// 行区分の設定
			outMsg2.set(ECH0101B010CBSMsg1List.GYO_DIV, "02");
		}
		else if("1".equals(sHSPtnCd))
		{
			// 利用開始年月日、利用終了年月日を取得する。
			String sUSEStaYMD = msg.getString(ECH0101B010CBSMsg1List.USE_STAYMD);
			String sUSEEndYMD = msg.getString(ECH0101B010CBSMsg1List.USE_ENDYMD);
			
			// 埋め込み文字列を利用開始年月日／利用終了年月日で置換する。
			String sPrcKmkNm = sSKNyCmt.replace("＄", sUSEStaYMD + "／" + sUSEEndYMD);
			
			// 埋め込み文字を置換したコメント内容を料金項目名称に設定する。
			outMsg2.set(ECH0101B010CBSMsg1List.PRC_KMK_NM, sPrcKmkNm);
			
			// 行区分の設定
			outMsg2.set(ECH0101B010CBSMsg1List.GYO_DIV, "02");
		}
		else if("2".equals(sHSPtnCd))
		{
			// 請求年月を取得する。
			String sSKYM = msg.getString(ECH0101B010CBSMsg1List.SEIKY_YM);
			
			// 埋め込み文字列を請求年月で置換する。
			String sPrcKmkNm = sSKNyCmt.replace("＄", sSKYM);
			
			// 埋め込み文字を置換したコメント内容を料金項目名称に設定する。
			outMsg2.set(ECH0101B010CBSMsg1List.PRC_KMK_NM, sPrcKmkNm);
			
			// 行区分の設定
			outMsg2.set(ECH0101B010CBSMsg1List.GYO_DIV, "02");
		}
		
		return outMsg2;
	}
	
	/**
	 * <p>
	 * ご利用期間の編集
	 * @param msg 処理対象のメッセージマップ
	 * @return sUseKikan 編集したご利用期間
	 * </p>
	 */
	private String editUseKikan(CAANMsg msg){
		
		// ご利用期間の編集
		String sUseStaYMD = msg.getString(ECH0101B010CBSMsg1List.USE_STAYMD);
		String sUseEndYMD = msg.getString(ECH0101B010CBSMsg1List.USE_ENDYMD);
		
		// 利用開始、終了年月日が設定されている場合
		// ご利用期間を編集する。
		if(sUseStaYMD != null)
		{
			// 月を取得する。
			String sUseStaM = sUseStaYMD.substring(4, 6);
			// 1桁目の0は空白で置換
			if (sUseStaM.startsWith("0", 0))
			{
				sUseStaM = sUseStaM.replaceFirst("0", " ");
			}

			String sUseEndM = sUseEndYMD.substring(4, 6);
			// 1桁目の0は空白で置換
			if (sUseEndM.startsWith("0", 0))
			{
				sUseEndM = sUseEndM.replaceFirst("0", " ");
			}

			// 日を取得する。
			String sUseStaD = sUseStaYMD.substring(6, 8);
			// 1桁目の0は空白で置換
			if (sUseStaD.startsWith("0", 0))
			{
				sUseStaD = sUseStaD.replaceFirst("0", " ");
			}

			String sUseEndD = sUseEndYMD.substring(6, 8);
			// 1桁目の0は空白で置換
			if (sUseEndD.startsWith("0", 0))
			{
				sUseEndD = sUseEndD.replaceFirst("0", " ");
			}

			// ご利用期間文字列の作成
			StringBuilder sUseKikan = new StringBuilder();
			sUseKikan.append(sUseStaM)
					 .append("月")
					 .append(sUseStaD)
					 .append("日")
					 .append("-")
					 .append(sUseEndM)
					 .append("月")
					 .append(sUseEndD)
					 .append("日");

			return sUseKikan.toString();
		}
		
		return null;
	}
	
	/**
	 * <p>
	 * 請求内訳取得処理
	 * 埋込み料金系項目で請求内訳を取得する。
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param msg 処理対象のメッセージ
	 * </p>
	 * @throws CAANException 
	 */
	private CAANMsg getCH0101(CAANMsg inMsg,AgentDispatchContext inContext, CAANMsg msg) throws CAANException{
		
		// 埋込みグループコードを取得
		String sUmkmPrcGrpCd = msg.getString(ECH0101B010CBSMsg1List.UMKM_PRC_GRP_CD);
		String sUmkmPcrsCd = msg.getString(ECH0101B010CBSMsg1List.UMKM_PCRS_CD);
		String sUmkmPrcSvcCd =  msg.getString(ECH0101B010CBSMsg1List.UMKM_PRC_SVC_CD);
		String sUmkmPrcKmkCd =  msg.getString(ECH0101B010CBSMsg1List.UMKM_PRC_KMK_CD);
		
		// キー項目取得
		String sSeikyNo = msg.getString(ECH0101B010CBSMsg1List.SEIKY_NO);
		String sSeikyKeiNo = msg.getString(ECH0101B010CBSMsg1List.SEIKY_KEI_NO);
		String sSeiriNo = msg.getString(ECH0101B010CBSMsg1List.SEIRI_NO);
		String sSvcKeiNo = msg.getString(ECH0101B010CBSMsg1List.SVC_KEI_NO);
		String sGsanSeikyYM = msg.getString(ECH0101B010CBSMsg1List.GSAN_SEIKY_YM);
		String sSeikyUcwkNo = msg.getString(ECH0101B010CBSMsg1List.SEIKY_UCWK_NO);
		
		// 請求内訳ロジカルエンティティクラス
		CH0101LE leCH0101 = new CH0101LE();
		
		// 請求内訳の取得
		CAANMsg magCH0101 = new CAANMsg(CH0101ETMsg.class.getName());
		magCH0101.set(CH0101ETMsg.SEIKY_NO, sSeikyNo);
		magCH0101.set(CH0101ETMsg.SEIKY_KEI_NO, sSeikyKeiNo);
		magCH0101.set(CH0101ETMsg.SEIRI_NO, sSeiriNo);
		magCH0101.set(CH0101ETMsg.SVC_KEI_NO, sSvcKeiNo);
		magCH0101.set(CH0101ETMsg.PRC_GRP_CD, sUmkmPrcGrpCd);
		magCH0101.set(CH0101ETMsg.PCRS_CD, sUmkmPcrsCd);
		magCH0101.set(CH0101ETMsg.PRC_SVC_CD, sUmkmPrcSvcCd);
		magCH0101.set(CH0101ETMsg.PRC_KMK_CD, sUmkmPrcKmkCd);
		magCH0101.set(CH0101ETMsg.GSAN_SEIKY_YM, sGsanSeikyYM);
		magCH0101.set(CH0101ETMsg.SEIKY_UCWK_NO, sSeikyUcwkNo);
		
		// 請求内訳の検索実行
		CAANMsg msgCH0101 = leCH0101.findByPrimaryKey(magCH0101);
		
		return msgCH0101;
	}

	/**
	*   業務パラメータ管理データ取得処理<br>
	*   @return String[]
	*/
	private String[] getWorkParam(){
		String[] workParam = new String[5];

		CAANMsg msgZM0321 = new CAANMsg(ZM0321ETMsg.class.getName());
		ZM0321LE le = new ZM0321LE();

		// 部屋番号表示用
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPARA_CH_RM_NO_DSP);
		msgZM0321.set(ZM0321ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);
		CAANMsg retZM0321 = le.findByPrimaryKey(msgZM0321);

		workParam[0] = retZM0321.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);

		// 部屋番号桁数
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPARA_CH_RM_NO_LEN);
		retZM0321 = le.findByPrimaryKey(msgZM0321);

		workParam[1] = retZM0321.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);

		// 未入居明細用サービス契約番号
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPAR_AC_MINYUKYO_SVCKEINO);
		retZM0321 = le.findByPrimaryKey(msgZM0321);

		workParam[2] = retZM0321.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);

		// 未入居明細用部屋番号
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPAR_CH_MINYUKYO_ROOM_NO);
		retZM0321 = le.findByPrimaryKey(msgZM0321);

		workParam[3] = retZM0321.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);

		// 未入居明細用契約者名
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPAR_CH_MINYUKYO_KEI_NM);
		retZM0321 = le.findByPrimaryKey(msgZM0321);

		workParam[4] = retZM0321.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);

		return workParam;
	}
	
	// AKN-4475-00-00_インボイス対応STEP2 ADD START
	/**
	*   業務パラメータ管理データ取得処理<br>
	*   @return String[]
	*/
	private String[] getWorkParamCd(){
		String[] workParamCd = new String[2];

		CAANMsg msgZM0321 = new CAANMsg(ZM0321ETMsg.class.getName());
		ZM0321LE le = new ZM0321LE();

		// 部屋番号表示用
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPARA_CH_RM_NO_DSP);
		msgZM0321.set(ZM0321ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);
		CAANMsg retZM0322 = le.findByPrimaryKey(msgZM0321);

		
		//料金グループコード、料金項目コード
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPAR_AC_MANS_OWNER_CD_01);
		retZM0322 = le.findByPrimaryKey(msgZM0321);
		
		workParamCd[0] = retZM0322.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);
		
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPAR_AC_MANS_OWNER_CD_02);
		retZM0322 = le.findByPrimaryKey(msgZM0321);
		
		workParamCd[1] = retZM0322.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);
		
		return workParamCd;
	}
	// AKN-4475-00-00_インボイス対応STEP2 ADD END

	/**
	*   契約者名取得処理<br>
	*   @return String[]
	*/
	private String getCustName(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, String> hmCustNmMap, String opeDate, String svcKeiNo)
	{
		String custNm = "";

		if (hmCustNmMap.get(svcKeiNo) != null)
		{
			custNm = hmCustNmMap.get(svcKeiNo);
			return custNm;
		}

		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;

		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CK0011ETMsg.getTableName());
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     CK0011.CUST_NM ")
					.append("   FROM ")
					.append("      KK_T_SVC_KEI KK0081 ")
					.append("   INNER JOIN ")
					.append("      CK_T_CUST CK0011 ")
					.append("   ON KK0081.SYSID = CK0011.SYSID ")
					.append("  WHERE ")
					.append("        KK0081.SVC_KEI_NO = ? ")
					.append("    AND KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ")
					.append("        (SELECT ")
					.append("             MAX( KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM ) ")
					.append("           FROM ")
					.append("             KK_T_SVC_KEI KK0081_GENE ")
					.append("          WHERE ")
					.append("               KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
					.append("           AND KK0081_GENE.RSV_APLY_YMD <= ? ")
					.append("           AND KK0081_GENE.RSV_APLY_CD = '2' ")
					.append("           AND KK0081_GENE.MK_FLG = '0') ")
					.append("    AND CK0011.RSV_APLY_YMD || CK0011.GENE_ADD_DTM = ")
					.append("        (SELECT ")
					.append("             MAX( CK0011_GENE.RSV_APLY_YMD || CK0011_GENE.GENE_ADD_DTM ) ")
					.append("           FROM ")
					.append("             CK_T_CUST CK0011_GENE ")
					.append("          WHERE ")
					.append("               CK0011_GENE.SYSID = CK0011.SYSID ")
					.append("           AND CK0011_GENE.RSV_APLY_YMD <= ? ")
					.append("           AND CK0011_GENE.RSV_APLY_CD = '2' ")
					.append("           AND CK0011_GENE.MK_FLG = '0') ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 戻り値の判定
			if (rsltQuery.next())
			{
				custNm = rsltQuery.getString(CK0011ETMsg.CUST_NM);
				hmCustNmMap.put(svcKeiNo, custNm);
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}

		return custNm;
	}
	
	/**
	*   請求年月から、利用終了日を取得します。<br>
	*   @param msg CBSメッセージ
	*   @param context エージェントディスパッチコンテキスト
	*   @param seikyYm YYYYMM形式の請求年月
	*   @return String YYYYMMDD形式の月末日
	*/
	private String getUseEnd(CAANMsg inCBSMsg, AgentDispatchContext inContext, String seikyYm)
	{
		String endYmd = "";

		if (seikyYm == null)
		{
			return "";
		}

		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;

		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0501ETMsg.getTableName());
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     CH0501.EVENT_YMD ")
					.append(" FROM ")
					.append("     CH_M_PRC_SCHDL_TEIGI CH0501 ")
					.append(" WHERE ")
					.append("     CH0501.EVENT_CD = '02' ")
					.append(" AND CH0501.SEIKY_YM = ? ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt, 1, seikyYm);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 戻り値の判定
			if (rsltQuery.next())
			{
				endYmd = rsltQuery.getString(CH0501ETMsg.EVENT_YMD);
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}

		return endYmd;
	}
	// ANK-4317-00-00 DEL START 過渡期対応削除
//	// ANK-4317-00-00 ADD START
//	/**
//	*   料金説明設定有無フラグ取得処理<br>
//	*   @return String[]
//	*/
//	private String getFeeExplanationUmFlg(CAANMsg inCBSMsg, AgentDispatchContext inContext, String opeDate)
//	{
//		String feeExplanationUmFlg = "";
//		
//		// コネクション
//		Connection con1 = null;
//		
//		// プリペアステートメント
//		PreparedStatement pstmt = null;
//		
//		// リザルトセット
//		ResultSet rsltQuery = null;
//		
//		try
//		{
//			//コネクション取得
//			con1 = JSYejbConnection.getConnection(CK0011ETMsg.getTableName());
//			StringBuffer sql_Buff = new StringBuffer();
//			sql_Buff.append(" SELECT ")
//					.append("     ZM0321.WORK_PARAM_SETTE_VALUE ")
//					.append("   FROM ")
//					.append("      ZM_M_WORK_PARAM_KNRI ZM0321 ")
//					.append("  WHERE ")
//					.append("        ZM0321.WORK_PARAM_ID = 'CH_202306RERESE_KTK' ")
//					.append("    AND ZM0321.WORK_PARAM_TSTAYMD <= ? ")
//					.append("    AND ZM0321.WORK_PARAM_TENDYMD >= ? ")
//					.append("    AND ZM0321.MK_FLG = '0' ");
//			
//			//prepareStatementにSQL文をセット
//			pstmt = con1.prepareStatement(sql_Buff.toString());
//
//			//ログ出力(SQL文の出力)
//			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);
//
//			// パラメータの設定
//			CAANJDBCUtil.setParam(pstmt, 1, opeDate);
//			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
//
//			// ResultSetの取得
//			rsltQuery = pstmt.executeQuery();
//
//			// 戻り値の判定
//			if (rsltQuery.next())
//			{
//				feeExplanationUmFlg = rsltQuery.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);
//			}
//		}
//		catch(SQLException e) 
//		{
//			inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
//			throw new CAANRuntimeException(e);
//		} 
//		finally 
//		{
//			// 資源の解放
//			try
//			{
//				if(rsltQuery != null)
//				{
//					rsltQuery.close();
//				}
//				if(pstmt != null)
//				{
//					pstmt.close();
//				}
//				if(con1 != null)
//				{
//					CAANConnectionMgr.getInstance().close(con1);
//				}
//			}
//			catch(SQLException e)
//			{
//				inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
//				throw new CAANRuntimeException(e);
//			}
//		}
//
//		return feeExplanationUmFlg;
//	}
//	// ANK-4317-00-00 ADD END
	// ANK-4317-00-00 DEL END 過渡期対応削除
	
//ANK-4543-00-00 ADD START
	/**
	* <p>
	* NTT卸契約取得処理
	* サービス契約番号をキーにしてNTT卸契約.NTT卸サービス種別を取得する。
	* @param inMsg 処理対象のメッセージキャリア
	* @param inContext Agentから渡されたAgentDispatchContext
	* @param msg 処理対象のメッセージ
	* </p>
	* @throws CAANException 
	*/
	private CAANMsg[] getNttorsSvcSbt(CAANMsg inCBSMsg, AgentDispatchContext inContext, String svcKeiNo, String seikyuEndD){
			
		// コネクション
		Connection con1 = null;
			
		// プリペアステートメント
		PreparedStatement pstmt = null;
			
		// リザルトセット
		ResultSet rsltQuery = null;
			
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK3511ETMsg.getTableName());
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     KK3511.NTTORS_SVC_SBT ")
					.append("    ,KK3511.GENE_ADD_DTM ")
					.append(" FROM ")
					.append("     KK_T_NTTORS_KEI KK3511 ")
					.append(" WHERE ")
					.append("     KK3511.SVC_KEI_NO = ? ")
					.append("     AND KK3511.SVC_CHRG_STAYMD IS NOT NULL ")
					.append("     AND KK3511.SVC_CHRG_ENDYMD IS NOT NULL ")
					.append("     AND KK3511.SVC_CHRG_STAYMD <= ? ")
					.append("     AND KK3511.SVC_CHRG_ENDYMD >= ? ")
				    .append("     AND KK3511.MK_FLG = '0' ")
				    .append(" ORDER BY ")
				    .append("     KK3511.GENE_ADD_DTM DESC ");
						
				
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, seikyuEndD);
			CAANJDBCUtil.setParam(pstmt, 3, seikyuEndD);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			String[] msgKeyList1 = {
					KK3511ETMsg.NTTORS_SVC_SBT
				   ,KK3511ETMsg.GENE_ADD_DTM
			};
			// 検索データの設定
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery, msgKeyList1,"eo.ejb.cbs.cbsmsg.EKK3511A010CBSMsg1List", 0);

			return outMsg1;
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}			
	}
		
	/**
	 * <p>
	 * NTT卸料金コース
	 * NTT卸サービス種別をキーにして「"00900701601"（料金内訳グループ計）」、「"01900801601"（ＩＤ番号計）」の料金名称を取得する。
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param msg 処理対象のメッセージ
	 * </p>
	 * @throws CAANException 
	 */
	private HashMap<String, String> getNttPrcKmkNm(CAANMsg inCBSMsg, AgentDispatchContext inContext, String opeDate, String NttorsSvcSbt){
		
		//NTT項目名称名マップ
		HashMap<String, String> NttPrcKmkNmMap = new HashMap<String, String>();	
		String NttPrcKmkNmID_NO = "";
		String NttPrcKmkNmPRU = "";

		if (NttorsSvcSbt == null)
		{
			return NttPrcKmkNmMap;
		}

		// コネクション
		Connection con1 = null;
			
		// プリペアステートメント
		PreparedStatement pstmt = null;
			
		// リザルトセット
		ResultSet rsltQuery = null;

		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CK0011ETMsg.getTableName());
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     KK3521.ID_NO_KEI ")
					.append("    ,KK3521.PRU_PRGP_KEI ")
					.append(" FROM ")
					.append("     KK_M_NTTORS_PCRS KK3521 ")
					.append(" WHERE ")
					.append("     KK3521.NTTORS_SVC_SBT = ? ")
					.append("     AND KK3521.NTT_OROSI_SVC_TSTAYMD <= ? ")
					.append("     AND KK3521.NTT_OROSI_SVC_TENDYMD >= ? ")
					.append("     AND KK3521.MK_FLG = '0' ");
				
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt, 1, NttorsSvcSbt);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 戻り値の判定
			if (rsltQuery.next())
			{
				 NttPrcKmkNmID_NO = rsltQuery.getString(KK3521ETMsg.ID_NO_KEI);
				 NttPrcKmkNmPRU = rsltQuery.getString(KK3521ETMsg.PRU_PRGP_KEI);
				 NttPrcKmkNmMap.put("id_no_kei", NttPrcKmkNmID_NO);
				 NttPrcKmkNmMap.put("pru_prgp_kei", NttPrcKmkNmPRU);
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}

		return  NttPrcKmkNmMap;
	}

	/**
	* <p>
	* 課金先取得処理
	* 請求契約番号をキーにして課金先.サービス契約番号を取得する。
	* @param inMsg 処理対象のメッセージキャリア
	* @param inContext Agentから渡されたAgentDispatchContext
	* @param msg 処理対象のメッセージ
	* </p>
	* @throws CAANException 
	*/
	private CAANMsg[] getKaKinSvcKeiNo(CAANMsg inCBSMsg, AgentDispatchContext inContext, String seikyKeiNo){
			
		// コネクション
		Connection con1 = null;
			
		// プリペアステートメント
		PreparedStatement pstmt = null;
			
		// リザルトセット
		ResultSet rsltQuery = null;
			
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK3511ETMsg.getTableName());
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     KK0321.SVC_KEI_NO ")
					.append(" FROM ")
					.append("     KK_T_KAKINS KK0321 ")
					.append(" WHERE ")
					.append("     KK0321.SEIKY_KEI_NO = ? ")
					.append("     AND KK0321.SVC_KEI_NO IS NOT NULL ")
				    .append("     AND KK0321.MK_FLG = '0' ");
						
				
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt, 1, seikyKeiNo);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			String[] msgKeyList1 = {
					KK0321ETMsg.SVC_KEI_NO
			};
			// 検索データの設定
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery, msgKeyList1,"eo.ejb.cbs.cbsmsg.EKK0321A010CBSMsg1List", 0);

			return outMsg1;
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}			
	}
	
	/**
     * 月末日取得処理 指定された年月の月末日を返却する。
     * <BR>
     * @param ym 年月
     * @return String 末日
     */
	public static String getEndOfMonth(String ym)
	{
		// 日付妥当性チェック
		if (!checkDate(ym, 6))
		{
			return "";
		}
		// 「次月の０日」を指定することによって、該当月の月末日を取得する。
		Calendar calendar = new GregorianCalendar(Integer.parseInt(ym.substring(0, 4)), Integer.parseInt(ym.substring(4, 6)), 0);
		// 変数lastに末日が格納される
		int last = calendar.get(Calendar.DATE);
		Integer.toString(last);
		String ymd = ym + last;
		return ymd;
	}
	
	/**
     * 日付妥当性チェック処理
     * <BR>
     * @param date yyyyMMddもしくはyyyyMM形式の日付
     * @param length チェック対象の日付の桁数
     * @return boolean
     */
	public static boolean checkDate(String date, int length)
	{
		// 引数チェック
		if (date == null || date.length() != length)
		{
			return false;
		}
		try
		{
			int yyyy = Integer.parseInt(date.substring(0, 4));
			int mm = Integer.parseInt(date.substring(4, 6));
			int dd = 1;
			if (length == 8)
			{
				dd = Integer.parseInt(date.substring(6, 8));
			}
			// 月は 0 から始まる。（0:１月 となる。）
			Calendar cl = new GregorianCalendar(yyyy, mm - 1, dd);
			// カレンダークラスにより、日付が調整されてしまっている場合は、エラーである。
			if ((cl.get(Calendar.YEAR) != yyyy)
					|| ((cl.get(Calendar.MONTH) + 1) != mm)
					|| (cl.get(Calendar.DATE) != dd))
			{
				return false;
			}
			else
			{
				return true;
			}
		}
		catch (Exception e)
		{
			return false;
		}
	}
//ANK-4543-00-00 ADD END
}
