/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatDKShkaSszInfoSakusei
*	ソースファイル名	：JBSbatDKShkaSszInfoSakusei.java
*	作成者				：富士通　
*	作成日				：2011年05月09日
*＜機能概要＞
*　出荷指図情報CSV作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/05/09   富士通		新規作成
*	v10.00.00	2014/11/19   窪田		OM-2014-0003575対応
*	v14.00.00	2015/04/16   FJ)中山	OM-2015-0000714対応
*	v31.00.00	2018/07/02   FJ)謝		【ANK-3136-04-00】OPMSハードウエア保守切れ対応（設備流用機器付加情報の編集仕様変更）
*	v39.00.00	2018/12/03   FJ)黒田	【OM-2018-0001192】障害対応
*	v73.00.00	2024/10/15   FJ)橋本	【ANK-4493-00-00】【eo定期】 光配線マンションのコースアップ対応
*********************************************************************/
package eo.business.service;

import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JDKBatOutputFileUtil;
import eo.business.util.file.JBSbatDKIFM004;
import eo.business.util.file.JBSbatDKIFM017;
import eo.business.util.file.JBSbatDKIFM018;
import eo.business.util.file.JBSbatDKIFM019;
import eo.common.constant.JDKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatAplConst;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatDKShkaSszInfoSakusei extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(出荷指図（基本情報）)*/
	private static final String D_TBL_NAME_DK_T_SHKA_KIHON_INFO = "DK_T_SHKA_KIHON_INFO";

	/** テーブル(出荷指図（端末情報）)*/
	private static final String D_TBL_NAME_DK_T_SHKA_TNMT_INFO = "DK_T_SHKA_TNMT_INFO";

	/** テーブル(出荷指図一時（基本情報）)*/
	private static final String D_TBL_NAME_DK_T_SHKA_KIHON_TMP = "DK_T_SHKA_KIHON_TMP";

	/** テーブル(出荷指図一時（端末情報）)*/
	private static final String D_TBL_NAME_DK_T_SHKA_TNMT_TMP = "DK_T_SHKA_TNMT_TMP";

	/** SQL定義キー(DK_SELECT_001)*/
	private static final String DK_T_SHKA_KIHON_INFO_DK_SELECT_001 = "DK_SELECT_001";

	/** SQL定義キー(DK_SELECT_001)*/
	private static final String DK_T_SHKA_TNMT_INFO_DK_SELECT_001 = "DK_SELECT_001";

	/** SQL定義キー(DK_DELETE_001)*/
	private static final String DK_T_SHKA_KIHON_TMP_DK_DELETE_001 = "DK_DELETE_001";

	/** SQL定義キー(DK_DELETE_001)*/
	private static final String DK_T_SHKA_TNMT_TMP_DK_DELETE_001 = "DK_DELETE_001";

	/** テーブルアクセスクラス(出荷指図（基本情報）)*/
	private JBSbatSQLAccess db_DK_T_SHKA_KIHON_INFO = null;

	/** テーブルアクセスクラス(出荷指図（端末情報）)*/
	private JBSbatSQLAccess db_DK_T_SHKA_TNMT_INFO = null;

	/** テーブルアクセスクラス(出荷指図一時（基本情報）)*/
	private JBSbatSQLAccess db_DK_T_SHKA_KIHON_TMP = null;

	/** テーブルアクセスクラス(出荷指図一時（端末情報）)*/
	private JBSbatSQLAccess db_DK_T_SHKA_TNMT_TMP = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

// ANK-4493-00-00 ADD START
	/** テーブル(業務パラメータ管理) */
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";
	/** SQL定義キー(DK_SELECT_001) */
	private static final String ZM_M_WORK_PARAM_KNRI_DK_SELECT_001 = "DK_SELECT_001";
	/** テーブルアクセスクラス(業務パラメータ管理) */
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;
// ANK-4493-00-00 ADD END
//OM-2015-0000714 ADD START
	/** 料金コースコード 再送信 */
	private static final String PCRS_CD_SAISOSHIN = "A23";

	/** 料金コースコード ＫＣＮ（役務） */
	private static final String PCRS_CD_KCN = "A25";

	/** 異動区分 新規契約 */
	private static final String IDO_DIV_NEWKEI = "00001";

	/** 異動区分 サービス追加 */
	private static final String IDO_DIV_SVCADD = "00002";

	/** 異動区分 コース変更 */
	private static final String IDO_DIV_COURSECHG = "00009";

	/** 異動区分 住所変更 */
	private static final String IDO_DIV_ADCHG = "00019";

	/** 異動区分 光電話・番号追加 */
	private static final String IDO_DIV_TELNOADD = "00041";

	/** 宅内機器種別コード タブレット */
	private static final String TK_SBT_CD_TABLET = "P0";

	/** 宅内機器種別コード クレードル */
	private static final String TK_SBT_CD_CRADLE = "L1";

	/** 宅内機器種別コード IP-STB */
	private static final String TK_SBT_CD_IPSTB = "Q0";
//OM-2015-0000714 ADD END
// ANK-4493-00-00 ADD START
	/** 料金プランコード変換マップ */
	private Map<String, String> mansPplanChgMap = new HashMap<String, String>();
// ANK-4493-00-00 ADD END

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_DK_T_SHKA_KIHON_INFO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_SHKA_KIHON_INFO);
		db_DK_T_SHKA_TNMT_INFO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_SHKA_TNMT_INFO);
		db_DK_T_SHKA_KIHON_TMP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_SHKA_KIHON_TMP);
		db_DK_T_SHKA_TNMT_TMP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_SHKA_TNMT_TMP);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
// ANK-4493-00-00 ADD START
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
// ANK-4493-00-00 ADD END
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		/* ++++++++++ v1.00.00 追加開始 ++++++++++ */
		Long idx = new Long(0);		// カウンター

		// ファイルの作成
		String fileNm = commonItem.getFreeItem();
		// 外部出力ファイルパス（パス + ファイル名）のシステム日付を置換
		String outFilePath = 
			fileNm.replace(JDKStrConst.FILE_NM_TIMESTAMP, "")
			+ getOpeDateTime() + ".csv";
		JBSbatOutputFileUtil outFile = new JBSbatOutputFileUtil(outFilePath);

		// 中間ファイルパス（パス + ファイル名）の取得
		String midFilePath = 
			rnktPath(JBSbatAplConst.getAplConstValue(JDKStrConst.ENV_MID_DIR), "") 
			+ JDKStrConst.OUT_MID_SHUKKA_SSZ_INFO_NM;

		// 中間ファイル出力
		outMidFile(outFilePath, midFilePath);

		// 外部ファイル作成
		createFile(outFilePath, outFile);

// ANK-4493-00-00 ADD START
		// 料金プランコード変換マップを作製する
		makeMansPplanChgMap();
// ANK-4493-00-00 ADD END
		// 出荷指図情報（基本）を取得
		String [] paramKihon = {commonItem.getOpeDate()};	// 運用日付
		executeDK_T_SHKA_KIHON_INFO_DK_SELECT_001(paramKihon);

		JBSbatCommonDBInterface dbKihonMap = new JBSbatCommonDBInterface();
		// 取得データが存在する場合
		while (true)
		{

			dbKihonMap = this.db_DK_T_SHKA_KIHON_INFO.selectNext();
			// 取得データが存在しない場合終了
			if (null == dbKihonMap)
			{
				break;
			}

			// データ部（基本情報）生成
			JBSbatServiceInterfaceMap outKihonDataMap = new JBSbatServiceInterfaceMap();
			// レコード種別
			outKihonDataMap.set(JBSbatDKIFM017.REC_SBT, 
								JDKBatOutputFileUtil.encloseDQuot(JDKStrConst.RECORD_SBT_DKIFM017_DATA));
			// 出荷種別コード
			outKihonDataMap.set(JBSbatDKIFM017.SHUKKA_SBT_CD, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("SHUKKA_SBT_CD")));
			// 出荷指図日
			outKihonDataMap.set(JBSbatDKIFM017.SHUKKASSZ_YMD, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("HAISO_SJI_YMD")));
			// 出荷ロット番号
			String strShukkaLotNo = dbKihonMap.getString("SHUKKA_LOT_NO");
			outKihonDataMap.set(JBSbatDKIFM017.SHUKKA_LOT_NO, 
								JDKBatOutputFileUtil.encloseDQuot(strShukkaLotNo));
			// 料金グループコード
			outKihonDataMap.set(JBSbatDKIFM017.PRC_GRP_CD, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("PRC_GRP_CD")));
			// 配送先郵便番号
			outKihonDataMap.set(JBSbatDKIFM017.HISOS_PCD, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("HISOS_PCD")));
			// 配送先都道府県名
			outKihonDataMap.set(JBSbatDKIFM017.HISOS_STATE_NM, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("HISOS_STATE_NM")));
			// 配送先市区町村名
			outKihonDataMap.set(JBSbatDKIFM017.HISOS_CITY_NM, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("HISOS_CITY_NM")));
			// 配送先大字通称名
			outKihonDataMap.set(JBSbatDKIFM017.HISOS_OAZTSU_NM, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("HISOS_OAZTSU_NM")));
			// 配送先字丁目名
			outKihonDataMap.set(JBSbatDKIFM017.HISOS_AZCHO_NM, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("HISOS_AZCHO_NM")));
			// 配送先番地号
			outKihonDataMap.set(JBSbatDKIFM017.HISOS_BNCHIGO, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("HISOS_BNCHIGO")));
			// 配送先住所補記・建物名
			outKihonDataMap.set(JBSbatDKIFM017.HISOS_ADRTTM, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("HISOS_ADRTTM")));
			// 配送先住所補記・部屋番号
			outKihonDataMap.set(JBSbatDKIFM017.HISOS_ADRRM, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("HISOS_ADRRM")));
			// 配送先名
			outKihonDataMap.set(JBSbatDKIFM017.HISOS_NM, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("HISOS_NM")));
			// 配送先電話番号
			outKihonDataMap.set(JBSbatDKIFM017.HISOS_TELNO, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("HISOS_TELNO")));
			// 料金コースコード
			outKihonDataMap.set(JBSbatDKIFM017.PCRS_CD, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("PCRS_CD")));
			// 料金プランコード
// ANK-4493-00-00 MOD START
//			outKihonDataMap.set(JBSbatDKIFM017.PPLAN_CD, 
//								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("PPLAN_CD")));
			// 提供方式パターンコードが光配線：コース変更可能の場合かつ、
			// 料金プランコード料金プランコード変換マップに定義されている場合、
			// 料金プランコードをコースアップ用ダミーコードに変換する
			if(JDKStrConst.CD01213_HHS_CSCHPSB.equals(dbKihonMap.getString("TK_HOSHIKI_PATTERN_CD")) &&
					mansPplanChgMap != null &&
					mansPplanChgMap.containsKey(dbKihonMap.getString("PPLAN_CD")))
			{
				outKihonDataMap.set(JBSbatDKIFM017.PPLAN_CD, 
						JDKBatOutputFileUtil.encloseDQuot(mansPplanChgMap.get(dbKihonMap.getString("PPLAN_CD"))));
			}
			// それ以外の場合
			else
			{
				outKihonDataMap.set(JBSbatDKIFM017.PPLAN_CD, 
						JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("PPLAN_CD")));
			}
// ANK-4493-00-00 MOD END
			// 契約者名
			outKihonDataMap.set(JBSbatDKIFM017.KEISHA_NM, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("KEISHA_NM")));
			// SYSID
			outKihonDataMap.set(JBSbatDKIFM017.SYSID, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("SYSID")));
			// サービス契約番号
			String strSvcKeiNo = dbKihonMap.getString("SVC_KEI_NO");
			outKihonDataMap.set(JBSbatDKIFM017.SVC_KEI_NO, 
								JDKBatOutputFileUtil.encloseDQuot(strSvcKeiNo));
			// ID通知書有無フラグ
			outKihonDataMap.set(JBSbatDKIFM017.ID_SOKHOSHO_OUTPUT_UM_FLG, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("ID_SOKHOSHO_OUTPUT_UM_FLG")));

//OM-2015-0000714 MOD START
			// ID通知書有無フラグが「1:通知書あり」の場合
			if ("1".equals(dbKihonMap.getString("ID_SOKHOSHO_OUTPUT_UM_FLG")))
			{
//				// 端末情報を検索し異動区分が 00001,00002,00009,00019,000041以外はＩＤ通知書を出さないので
//				// 該当のサービス契約内に該当の移動区分があるかチェックする。
//				// 出荷指図情報（端末）を取得
//				// 運用日付、基本情報から取得した出荷ロット番号、サービス契約番号を設定
//				String [] wkParamTnmt = {commonItem.getOpeDate(), strShukkaLotNo, strSvcKeiNo};
//				executeDK_T_SHKA_TNMT_INFO_DK_SELECT_001(wkParamTnmt);
//				
//				boolean retFlg = true;
//				JBSbatCommonDBInterface dbTnmtMapWk = new JBSbatCommonDBInterface();
//				while (true)
//				{
//
//					dbTnmtMapWk = this.db_DK_T_SHKA_TNMT_INFO.selectNext();
//					// 取得データが存在しない場合終了
//					if (null == dbTnmtMapWk)
//					{
//						break;
//					}
//					// OM-2014-0003575 MOD START
//					// 宅内機器種別コードがタブレット・クレードルはID通知書対象外の為チェック以下のチェックをしない
//					if (("P0".equals(dbTnmtMapWk.getString("TAKNKIKI_SBT_CD"))) ||
//					    ("L1".equals(dbTnmtMapWk.getString("TAKNKIKI_SBT_CD")))) {
//						break;
//					}
//					// OM-2014-0003575 ADD END
//					// 異動区分
//					if ("00001".equals(dbTnmtMapWk.getString("IDO_DIV"))) {
//						retFlg = false;
//						break;
//					} else if ("00002".equals(dbTnmtMapWk.getString("IDO_DIV"))) {
//						retFlg = false;
//						break;
//					} else if ("00009".equals(dbTnmtMapWk.getString("IDO_DIV"))) {
//						retFlg = false;
//						break;
//					} else if ("00019".equals(dbTnmtMapWk.getString("IDO_DIV"))) {
//						retFlg = false;
//						break;
//					} else if ("00041".equals(dbTnmtMapWk.getString("IDO_DIV"))) {
//						retFlg = false;
//						break;
//					}
//				}
//				// 該当の異動区分のデータが無かったのでID通知書有無フラグはなしにする。
//				if (retFlg) {
//					// ID通知書有無フラグをID通知書なし
//					outKihonDataMap.set(JBSbatDKIFM017.ID_SOKHOSHO_OUTPUT_UM_FLG, "0");
//				} else {
//					// 料金コースが再送信
//					if ("A23".equals(dbKihonMap.getString("PCRS_CD"))) {
//						// ID通知書有無フラグをID通知書なし
//						outKihonDataMap.set(JBSbatDKIFM017.ID_SOKHOSHO_OUTPUT_UM_FLG, "0");
//					// 料金コースがＫＣＮ（役務提供）
//					} else	if ("A25".equals(dbKihonMap.getString("PCRS_CD"))) {
//						// ID通知書有無フラグをID通知書なし
//						outKihonDataMap.set(JBSbatDKIFM017.ID_SOKHOSHO_OUTPUT_UM_FLG, "0");
//					}
//				}
				if (isTchishoNashi(dbKihonMap.getString("PCRS_CD"), strShukkaLotNo, strSvcKeiNo))
				{
					// ID通知書有無フラグをID通知書なし
					outKihonDataMap.set(JBSbatDKIFM017.ID_SOKHOSHO_OUTPUT_UM_FLG,
							JDKBatOutputFileUtil.encloseDQuot("0"));
				}
			}
//OM-2015-0000714 MOD END
			
			// データ数
			outKihonDataMap.set(JBSbatDKIFM017.DATA_CNT, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("DATA_CNT")));
			// 工事会社コード
			outKihonDataMap.set(JBSbatDKIFM017.KOJI_COMP_CD, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("KOJI_COMP_CD")));
			// 工事予定日
			outKihonDataMap.set(JBSbatDKIFM017.KOJI_RSV_YMD, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("KOJI_RSV_YMD")));
			// 案件番号
			outKihonDataMap.set(JBSbatDKIFM017.KOJIAK_NO, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("KOJIAK_NO")));
			// 相手先案件番号
			outKihonDataMap.set(JBSbatDKIFM017.DOJI_KOJIAK_NO, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("DOJI_KOJIAK_NO")));
			// 設計書番号
			outKihonDataMap.set(JBSbatDKIFM017.DDT_NO, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("DDT_NO")));
			// OPMS申込形態
			outKihonDataMap.set(JBSbatDKIFM017.OPMS_MSKM_FORM, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("OPMS_MSKM_FORM")));
			// IP種別
			outKihonDataMap.set(JBSbatDKIFM017.IP_SBT, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("IP_SBT")));
			// TV種別
			outKihonDataMap.set(JBSbatDKIFM017.TV_SBT, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("TV_SBT")));
			// 住所未確定フラグ
			outKihonDataMap.set(JBSbatDKIFM017.AD_MI_FIX_FLG, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("AD_MI_FIX_FLG")));
			// STB無しメニューフラグ
			outKihonDataMap.set(JBSbatDKIFM017.STB_NON_MENU_FLG, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("STB_NON_MENU_FLG")));
			// 配送到着指定時間帯コード
			outKihonDataMap.set(JBSbatDKIFM017.HAISO_ARIV_SHITEI_TIME_CD, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("HAISO_ARIV_SHITEI_TIME_CD")));
			// 採番開始トムソンケース番号
			outKihonDataMap.set(JBSbatDKIFM017.SAIBAN_STA_TCASE_NO, 
								JDKBatOutputFileUtil.encloseDQuot(dbKihonMap.getString("SAIBAN_STA_TCASE_NO")));

			try
			{
				String defFile = rnktPath(JBSbatAplConst.getAplConstValue(JDKStrConst.DK_DIR_IND), "") 
								+ JDKStrConst.DEF_DATA_KIHON_SHUKKA_SSZ_INFO;
				JBSbatDefFileUtil defKihonUtil = new JBSbatDefFileUtil(defFile, outFile);
				outFile.print(outKihonDataMap, defKihonUtil);
			}
			catch (Exception ex)
			{
				super.logPrint.printDebugLog("出力ファイル基本情報書き込み失敗");
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0050CE,
						new String[] {outFilePath});
				throw ex;
			}
			idx += 1;	// 連番に1追加

			// 出荷指図情報（端末）を取得
			// 運用日付、基本情報から取得した出荷ロット番号、サービス契約番号を設定
			String [] paramTnmt = {commonItem.getOpeDate(), strShukkaLotNo, strSvcKeiNo};
			executeDK_T_SHKA_TNMT_INFO_DK_SELECT_001(paramTnmt);

			JBSbatCommonDBInterface dbTnmtMap = new JBSbatCommonDBInterface();
			while (true)
			{

				dbTnmtMap = this.db_DK_T_SHKA_TNMT_INFO.selectNext();
				// 取得データが存在しない場合終了
				if (null == dbTnmtMap)
				{
					break;
				}

				// データ部（端末情報）生成
				JBSbatServiceInterfaceMap outTnmtDataMap = new JBSbatServiceInterfaceMap();

				// レコード種別
				outTnmtDataMap.set(JBSbatDKIFM017.REC_SBT, 
									JDKBatOutputFileUtil.encloseDQuot(JDKStrConst.RECORD_SBT_DKIFM018_DATA));
				// 出荷指図日
				outTnmtDataMap.set(JBSbatDKIFM018.SHUKKASSZ_YMD, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("HAISO_SJI_YMD")));
				// 出荷ロット番号
				outTnmtDataMap.set(JBSbatDKIFM018.SHUKKA_LOT_NO, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("SHUKKA_LOT_NO")));
				// 枝番号
				outTnmtDataMap.set(JBSbatDKIFM018.BRANCH_NO, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("SHUKKA_LOT_KIKI_SEQ")));
				// 保管場所コード （倉庫コード ＋ 棚コード）
				outTnmtDataMap.set(JBSbatDKIFM018.STORAGEPLACE_CD, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("SOKO_CD")
																	+ dbTnmtMap.getString("SHELF_CD")));
				// 機器製造番号
				outTnmtDataMap.set(JBSbatDKIFM018.KIKI_SEIZO_NO, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("KIKI_SEIZO_NO")));
				// 宅内機器型式コード
				outTnmtDataMap.set(JBSbatDKIFM018.TAKNKIKI_MODEL_CD, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("TAKNKIKI_MODEL_CD")));
				// 宅内機器セット品型コード
				outTnmtDataMap.set(JBSbatDKIFM018.TAKNKIKI_SETHIN_MODEL_CD, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("TAKNKIKI_SETHIN_MODEL_CD")));
				// 数量
				outTnmtDataMap.set(JBSbatDKIFM018.CNT, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("CNT")));
// ANK-3136-04-00 MOD START
//				// 付加情報
//				outTnmtDataMap.set(JBSbatDKIFM018.HUKA_INFO, 
//									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("HUKA_INFO")));
				String hukaInfo = dbTnmtMap.getString("HUKA_INFO");
				
				// 設備流用付加情報
				HashSet<String> equipRyuyoHukaInfo = new HashSet<String>();
				equipRyuyoHukaInfo.add(JDKStrConst.EQUIP_RYUYO_HUKA_INFO_ROUTER);		// ＢＢＲ
				equipRyuyoHukaInfo.add(JDKStrConst.EQUIP_RYUYO_HUKA_INFO_VA);			// ＶＡ
				equipRyuyoHukaInfo.add(JDKStrConst.EQUIP_RYUYO_HUKA_INFO_ROUTER_VA);	// ＢＢＲ＋ＶＡ
				equipRyuyoHukaInfo.add(JDKStrConst.EQUIP_RYUYO_HUKA_INFO_TAKINORT);		// 多機能ルーター
				equipRyuyoHukaInfo.add(JDKStrConst.EQUIP_RYUYO_HUKA_INFO_TAKINORT_VA);	// 多機能ルーター＋ＶＡ
				
				// 宅内機器種別コードが〔多機能ルーター〕かつ付加情報に設備流用の値が設定されている場合
				if (JDKStrConst.TAKINORT.equals(dbTnmtMap.getString("TAKNKIKI_SBT_CD"))
						&& equipRyuyoHukaInfo.contains(dbTnmtMap.getString("EQUIP_RYUYO_HUKA_INFO")))
				{
					hukaInfo = dbTnmtMap.getString("EQUIP_RYUYO_HUKA_INFO");
				}
				
// OM-2018-0001192 ADD START
				// STB交換付加情報
				HashSet<String> stbKokanHukaInfo = new HashSet<String>();
				stbKokanHukaInfo.add(JDKStrConst.STB_KIKI_KOKAN_INFO_STB_4KSTB);		// STB→4KSTB
				stbKokanHukaInfo.add(JDKStrConst.STB_KIKI_KOKAN_INFO_4KSTB_STB);		// 4KSTB→STB
				stbKokanHukaInfo.add(JDKStrConst.STB_KIKI_KOKAN_INFO_4KSTB_4KSTB);	// 4KSTB→4KSTB
				stbKokanHukaInfo.add(JDKStrConst.STB_KIKI_KOKAN_INFO_STB_STB);		// STB→STB
				
				// 宅内機器種別コードが〔STB〕かつ 異動区分が〔コース変更〕または〔住所変更〕かつ 付加情報にSTB交換の値が設定されている場合
				if (JDKStrConst.STB.equals(dbTnmtMap.getString("TAKNKIKI_SBT_CD"))
						&& (IDO_DIV_COURSECHG.equals(dbTnmtMap.getString("IDO_DIV")) || IDO_DIV_ADCHG.equals(dbTnmtMap.getString("IDO_DIV")))
						&& stbKokanHukaInfo.contains(dbTnmtMap.getString("STB_KOKAN_HUKA_INFO")))
				{
					hukaInfo = dbTnmtMap.getString("STB_KOKAN_HUKA_INFO");
				}
// OM-2018-0001192 ADD END
				
				// 付加情報
				outTnmtDataMap.set(JBSbatDKIFM018.HUKA_INFO, 
									JDKBatOutputFileUtil.encloseDQuot(hukaInfo));
// ANK-3136-04-00 MOD END
				// 異動区分
				outTnmtDataMap.set(JBSbatDKIFM018.IDO_DIV, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("IDO_DIV")));
				// 販売種別コード
				outTnmtDataMap.set(JBSbatDKIFM018.HAMBAI_SBT_CD, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("HAMBAI_SBT_CD")));
				// 機器提供コード
				outTnmtDataMap.set(JBSbatDKIFM018.KIKI_PROVIDE_CD, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("KIKI_KEI_DIV")));
				// PLC親子区分
				outTnmtDataMap.set(JBSbatDKIFM018.PLC_OYAKO_DIV, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("PLC_OYAKO_DIV")));
				// STB異動区分
				outTnmtDataMap.set(JBSbatDKIFM018.STB_IDO_DIV, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("STB_IDO_DIV")));
				// 旧STBID
				outTnmtDataMap.set(JBSbatDKIFM018.OLD_STB_ID, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("OLD_STB_ID")));
				// ＴＶコース
				outTnmtDataMap.set(JBSbatDKIFM018.TV_COURSE, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("TV_COURSE")));
				// 回収ルーター有無
				outTnmtDataMap.set(JBSbatDKIFM018.KAISHU_ROUTER_UM, 
									JDKBatOutputFileUtil.encloseDQuot(dbTnmtMap.getString("KAISHU_ROUTER_UM")));

				try
				{
					String defFile = rnktPath(JBSbatAplConst.getAplConstValue(JDKStrConst.DK_DIR_IND), "")
									+ JDKStrConst.DEF_DATA_TNMT_SHUKKA_SSZ_INFO;
					JBSbatDefFileUtil defTnmtUtil = new JBSbatDefFileUtil(defFile, outFile);
					outFile.print(outTnmtDataMap, defTnmtUtil);
				}
				catch (Exception ex)
				{
					super.logPrint.printDebugLog("出力ファイル端末情報書き込み失敗");
					commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0050CE,
							new String[] {outFilePath});
					throw ex;
				}
				idx += 1;	// 連番に1追加
			}
		}

		// データが存在する場合、トレーラ部生成
		if (0 != idx.intValue())
		{
			outTrailer(idx, outFile, outFilePath);
		}

		// データが存在する場合、DBデータ全削除
		if (0 != idx.intValue())
		{
			deleteKihonTmpAndTnmtTmp();
		}
		/* ++++++++++ v1.00.00 追加終了 ++++++++++ */

		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_DK_T_SHKA_KIHON_INFO.close();
		db_DK_T_SHKA_TNMT_INFO.close();
		db_DK_T_SHKA_KIHON_TMP.close();
		db_DK_T_SHKA_TNMT_TMP.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/

	/**
	 * SQLKEY(DK_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	配送指示年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeDK_T_SHKA_KIHON_INFO_DK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_DK_T_SHKA_KIHON_INFO.selectBySqlDefine(paramList, DK_T_SHKA_KIHON_INFO_DK_SELECT_001);
	}

	/**
	 * SQLKEY(DK_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	配送指示年月日
	 *		 	出荷ロット番号
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeDK_T_SHKA_TNMT_INFO_DK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_DK_T_SHKA_TNMT_INFO.selectBySqlDefine(paramList, DK_T_SHKA_TNMT_INFO_DK_SELECT_001);
	}

	/**
	 * SQLKEY(DK_DELETE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeDK_T_SHKA_KIHON_TMP_DK_DELETE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		// DBアクセスを実行します
		db_DK_T_SHKA_KIHON_TMP.executeBySqlDefine(paramList, DK_T_SHKA_KIHON_TMP_DK_DELETE_001);
	}

	/**
	 * SQLKEY(DK_DELETE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeDK_T_SHKA_TNMT_TMP_DK_DELETE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		// DBアクセスを実行します
		db_DK_T_SHKA_TNMT_TMP.executeBySqlDefine(paramList, DK_T_SHKA_TNMT_TMP_DK_DELETE_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/* ++++++++++ v1.00.00 追加開始 ++++++++++ */

	/**
	 * 出力ファイル作成を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.出力ファイルの作成を行います。<br>
	 * </pre>
	 * <p>
	 * @param outFilePath 出力ファイル名（パス ＋ ファイル名）。
	 * @param outFile ファイル出力制御クラス。
	 * @return なし。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void createFile(String outFilePath, JBSbatOutputFileUtil outFile) throws Exception 
	{
		outFile.setEncode(JDKStrConst.ENCODE_SJIS);		// 文字コード
		outFile.setLine(JDKStrConst.LINE_CRLF);			// 改行コード
		try
		{
			outFile.createWriter();
		}
		catch (IOException ex)
		{
			super.logPrint.printDebugLog("出力ファイル作成失敗");
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0030CE,
					new String[] {outFilePath});
			throw ex;
		}
	}

	/**
	 * 中間ファイル出力を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.中間ファイルの出力を行います。<br>
	 * </pre>
	 * <p>
	 * @param outFile 出荷指図情報送信ファイル名（パス ＋ ファイル名）。
	 * @param midFile 中間ファイル名（パス ＋ ファイル名）。
	 * @return なし。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void outMidFile(String outFile, String midFile) throws Exception 
	{
		JBSbatOutputFileUtil outMidFile = new JBSbatOutputFileUtil(midFile);
		outMidFile.setEncode(JDKStrConst.ENCODE_SJIS);		// 文字コード
		outMidFile.setLine(JDKStrConst.LINE_CRLF);			// 改行コード

		// ファイル出力
		try
		{
			outMidFile.createWriter();
		}
		catch (IOException ex)
		{
			super.logPrint.printDebugLog("中間ファイル作成失敗");
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0030CE,
					new String[] {midFile});
			throw ex;
		}

		// ファイル書き込み
		JBSbatServiceInterfaceMap outMidMap = new JBSbatServiceInterfaceMap();
		outMidMap.set(JBSbatDKIFM004.FILE_NM, outFile);	// 出荷指図情報送信ファイル名

		try
		{
			String defFile = rnktPath(JBSbatAplConst.getAplConstValue(JDKStrConst.DK_DIR_IND), "")
							+ JDKStrConst.DEF_MID_SHUKKA_SSZ_INFO;
			JBSbatDefFileUtil defMidUtil = new JBSbatDefFileUtil(defFile, outMidFile);
			outMidFile.print(outMidMap, defMidUtil);
		}
		catch (Exception ex)
		{
			super.logPrint.printDebugLog("中間ファイル書き込み失敗");
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0050CE,
					new String[] {midFile});
			throw ex;
		}
		finally
		{
			outMidFile.close();	// ファイルクローズ
		}
	}

	/**
	 * トレーラ部出力を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.トレーラ部の出力を行います。<br>
	 * </pre>
	 * <p>
	 * @param idx カウンター
	 * @param outFile ファイル出力制御クラス。
	 * @param outFilePath 出荷指図情報送信ファイル名（パス ＋ ファイル名）。
	 * @return なし。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void outTrailer(long idx, JBSbatOutputFileUtil outFile, String outFilePath) throws Exception 
	{
		JBSbatServiceInterfaceMap outTrailerMap = new JBSbatServiceInterfaceMap();
		// レコード種別
		outTrailerMap.set(JBSbatDKIFM019.REC_SBT, 
							JDKBatOutputFileUtil.encloseDQuot(JDKStrConst.RECORD_SBT_DKIFM019_TRAILER));
		// レコード件数
		idx += 1;	// 件数にトレーラ部の分を追加
		outTrailerMap.set(JBSbatDKIFM019.REC_CNT, 
							JDKBatOutputFileUtil.encloseDQuot(String.valueOf(idx)));

		try
		{
			String defFile = rnktPath(JBSbatAplConst.getAplConstValue(JDKStrConst.DK_DIR_IND), "")
							+ JDKStrConst.DEF_TRAILER_SHUKKA_SSZ_INFO;
			JBSbatDefFileUtil defTrailerUtil = new JBSbatDefFileUtil(defFile, outFile);
			outFile.print(outTrailerMap, defTrailerUtil);
		}
		catch (Exception ex)
		{
			super.logPrint.printDebugLog("出力ファイルトレーラ部書き込み失敗");
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0050CE,
					new String[] {outFilePath});
			throw ex;
		}
		finally
		{
			outFile.close();	// ファイルクローズ
		}
	}

	/**
	 * 出荷指図一時(基本情報)、出荷指図一時(端末情報)テーブルの全データ削除を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.出荷指図一時(基本情報)、出荷指図一時(端末情報)テーブルの全データ削除を行います。<br>
	 * </pre>
	 * <p>
	 * @return なし。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void deleteKihonTmpAndTnmtTmp() throws Exception 
	{
		String [] param = {""};	// SQL発行用空文字
		// 出荷指図一時(基本情報)
		try
		{
			executeDK_T_SHKA_KIHON_TMP_DK_DELETE_001(param);
		}
		catch (Exception ex)
		{
			commonItem.getConnection().rollback();
			super.logPrint.printDebugLog("出荷指図(基本情報)情報削除失敗");
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0060CE,
					new String[] {JDKStrConst.S_DK_T_SHKA_KIHON_TMP_NM});
			throw ex;
		}

		// 出荷指図一時(端末情報)
		try
		{
			executeDK_T_SHKA_TNMT_TMP_DK_DELETE_001(param);
		}
		catch (Exception ex)
		{
			commonItem.getConnection().rollback();
			super.logPrint.printDebugLog("出荷指図(端末情報)情報削除失敗");
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0060CE,
					new String[] {JDKStrConst.S_DK_T_SHKA_TNMT_TMP_NM});
			throw ex;
		}
		// コミット
		super.commit();
	}

	/**
	 * 運用日付時分秒の取得を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.運用日付(yyyyMMdd) + システム日時(hhmmss)を返却します。<br>
	 * </pre>
	 * <p>
	 * @return String 運用日付時分秒。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String getOpeDateTime() throws Exception 
	{
		String strTime = JCCBatCommon.getSysDateTime();

		return (strTime);
	}

	/**
	 * パス文字列の連結<br>
	 * 連結するパス文字列にパス区切り文字の設定を制御する。
	 * @param path1 パス文字列
	 * @param path2 パス文字列
	 * @return 連結したパス文字列
	 */
	private String rnktPath(String path1, String path2)
	{
		String pathDlmt = "/";
		if (path1.indexOf("\\") > -1 || path2.indexOf("\\") > -1)
		{
			pathDlmt = "\\";
		}
		if (!path1.endsWith(pathDlmt))
		{
			return path1 + pathDlmt + path2;
		}
		return path1 + path2;
	}
	/* ++++++++++ v1.00.00 追加終了 ++++++++++ */

//OM-2015-0000714 ADD START
	
	/**
	 * 出荷指図情報送信の【データ部-基本情報】ID通知書有無フラグに設定する値が「0:通知書なし」かを判定します。
	 * <br>
	 * @param pcrsCd 料金コースコード
	 * @param shukkaLotNo 出荷ロット番号
	 * @param svcKeiNo サービス契約番号
	 * @return true:通知書なし false:通知書あり
	 * @throws Exception 
	 */
	private boolean isTchishoNashi(String pcrsCd, String shukkaLotNo, String svcKeiNo) throws Exception
	{
		// 料金コースが再送信 or ＫＣＮ（役務提供）
		if (PCRS_CD_SAISOSHIN.equals(pcrsCd) || PCRS_CD_KCN.equals(pcrsCd))
		{
			return true;
		}
		
		// 出荷指図情報（端末）を取得
		String [] wkParamTnmt = {commonItem.getOpeDate(), shukkaLotNo, svcKeiNo};
		executeDK_T_SHKA_TNMT_INFO_DK_SELECT_001(wkParamTnmt);
		
		List<String> tkSbtList = Arrays.asList(
				new String[]{TK_SBT_CD_TABLET, TK_SBT_CD_CRADLE, TK_SBT_CD_IPSTB});
		
		List<String> idoDivList = Arrays.asList(
				new String[]{IDO_DIV_NEWKEI, IDO_DIV_SVCADD, IDO_DIV_COURSECHG, IDO_DIV_ADCHG, IDO_DIV_TELNOADD});
		
		boolean isExistHakkoKiki = false;
		boolean isExistHakkoIdoDiv = false;
		
		JBSbatCommonDBInterface dbTnmtMapWk = new JBSbatCommonDBInterface();
		
		dbTnmtMapWk = this.db_DK_T_SHKA_TNMT_INFO.selectNext();
		while (null != dbTnmtMapWk)
		{
			// タブレット・クレードル・光スティック以外の機器の存在をチェック
			if (!tkSbtList.contains(dbTnmtMapWk.getString("TAKNKIKI_SBT_CD")))
			{
				isExistHakkoKiki = true;
			}
			
			// 端末情報を検索し異動区分が 00001,00002,00009,00019,000041以外はＩＤ通知書を出さないので
			// 該当のサービス契約内に該当の異動区分があるかチェックする。
			if (idoDivList.contains(dbTnmtMapWk.getString("IDO_DIV")))
			{
				isExistHakkoIdoDiv = true;
			}
			
			dbTnmtMapWk = this.db_DK_T_SHKA_TNMT_INFO.selectNext();
		}
		
		// タブレット・クレードル・光スティック以外の機器の出荷がない
		// もしくは、ID通知書を発行する異動区分の機器の出荷がない
		if (!isExistHakkoKiki || !isExistHakkoIdoDiv)
		{
			return true;
		}
		
		return false;
	}

//OM-2015-0000714 ADD END

// ANK-4493-00-00 ADD START
	/**
	 * SQLKEY(DK_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	業務パラメータID
	 *		 	業務パラメータ適用開始年月日
	 *		 	業務パラメータ適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_DK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_DK_SELECT_001);
	}
	/**
	 * 業務パラメータ管理テーブルからマンション料金プランコード変換を抽出し、料金プランコード変換マップを作成する
	 * <br>
	 * @return なし
	 * @throws Exception
	 */
	private void makeMansPplanChgMap() throws Exception
	{
		// 料金プランコード変換マップを初期化する
		mansPplanChgMap = new HashMap<String, String>();
		// 業務パラメータ管理スキーマの取得条件を設定
		String [] param = {
				JDKStrConst.MANS_PPLAN_CHG_001,	// 業務パラメータID
				commonItem.getOpeDate(),		// 業務パラメータ適用開始年月日
				commonItem.getOpeDate()			// 業務パラメータ適用終了年月日
				};
		// SQL実行
		executeZM_M_WORK_PARAM_KNRI_DK_SELECT_001(param);
		
		// 結果を取得
		JBSbatCommonDBInterface gyomuParamKnri = new JBSbatCommonDBInterface(); 
		gyomuParamKnri = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		// レコードが取得できている場合
		if(gyomuParamKnri != null)
		{
			// 業務パラメータ管理.業務パラメータ設定値を取得する
			String mansPplanChgStr = gyomuParamKnri.getString("WORK_PARAM_SETTE_VALUE");
			// 取得した業務パラメータ設定値が空ではない場合
			if(mansPplanChgStr != null && !"".equals(mansPplanChgStr))
			{
				// 業務パラメータ設定値を「,」で分割する
				String[] mansPplanChgBnktMap = mansPplanChgStr.split(JDKStrConst.COMMA);
				// 分割した配列の要素数が2以上の場合
				if(mansPplanChgBnktMap.length >= 2)
				{
					// 第一要素をキー、第二要素を値として料金プランコード変換マップに追加する
					mansPplanChgMap.put(mansPplanChgBnktMap[0], mansPplanChgBnktMap[1]);
				}
			}
		}
	}
// ANK-4493-00-00 ADD END
	
}
