/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatTUJgskAdjRsltTrkm
*	ソースファイル名	：JBSbatTUJgskAdjRsltTrkm.java
*	作成者				：富士通　
*	作成日				：2011年06月08日
*＜機能概要＞
*　事業者間調整結果取込部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2011/06/08  FJ) 北村	新規作成
*	v3.01.00	2012/07/17	FJ) 北村	【ST2-2012-0001387】想定外のファイルで当バッチ起動時システムエラーとなる不具合対応
*	v4.00.00	2012/08/03	FJ) 北村	【TAI-2012-0000094】JBSbatSQLAccessを複数回実行回避対応
*	v4.01.00	2012/08/14	FJ) 北村	単体製造品質チェック対応
*	v5.00.00	2013/01/28	FJ) 高橋	【ANK-1245-00-00】機種依存文字対応
*	v5.00.01	2013/09/11	FJ) 黒田	【OM-2013-0001609】
*	v6.00.00	2013/12/20	FJ) 黒田	【ANK-1765-00-00】
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JPCBatCommon;
import eo.business.common.JTUBatCommon;
import eo.business.util.file.JBSbatTUIFE003;
import eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ;
import eo.business.util.table.JBSbatTU_T_BMP_KOJI;
import eo.common.constant.JTUStrConst;
import eo.common.constant.JZM0171Constant;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessBase;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatCheckUtil;
import eo.framework.log.JBSbatLogPrintControl;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatTUJgskAdjRsltTrkm extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(番ポ工事)*/
	private static final String D_TBL_NAME_TU_T_BMP_KOJI = "TU_T_BMP_KOJI";

	/** SQL定義キー(TU_SELECT_002)*/
	private static final String TU_T_BMP_KOJI_TU_SELECT_002 = "TU_SELECT_002";

	/** テーブルアクセスクラス(番ポ工事)*/
	private JBSbatSQLAccess db_TU_T_BMP_KOJI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	
	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";
	
	/**  結果ファイルオブジェクト*/
	private JBSbatBusinessFileUtil  rsltFileObj = null;
	
	/** 結果ファイル名*/
	private String rsltFileName = null;
	
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";
	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;

	/** ディレイド処理依頼確認部品呼び出し*/
	private ArrayList<HashMap<String, Object>> dlydTrnMapList = null;
	
	/** ファイル読込件数*/
	private int fileRecordCnt = 0;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_TU_T_BMP_KOJI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_TU_T_BMP_KOJI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		// ディレイド処理依頼確認部品呼び出し
		dlydTrnMapList = JPCBatCommon.getShoriIraiInfo(commonItem, commonItem.getJobid());
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		if (dlydTrnMapList == null)
		{
			// ディレイドからファイルが取得できない場合、処理終了
			return null;
		}
		
		int fileCnt = 0;
		
		try
		{
			for (int i = 0; i < dlydTrnMapList.size(); i++) 
			{
				//結果リスト作成
				createRsltFile();
				
				String resultCd = JTUStrConst.DLYD_FIN;
				// エラーフラグ初期化
				boolean isErrFlg = false;
				boolean isErrFlg_2 = false;
				
				// ファイルレコード件数初期化
				fileRecordCnt = 0;
				
				// ファイル件数設定
				fileCnt = i;
				
				// 電子ファイル管理から事業者間調整結果受付ファイル取得
				String filePath = JPCBatCommon.searchDenshiFile(commonItem, dlydTrnMapList.get(i).get(JBSbatCC_T_DLYD_TRN_REQ.INPUT_EFILE_KANRI_NO).toString());
				
				// 事業者間調整結果受付ファイルオブジェクトを生成する
				JBSbatInputFileUtil jgskAdjRslt = new JBSbatInputFileUtil(filePath);
				// 事業者間調整結果受付ファイル名を取得する
				String jgskAdjRsltDefName = JBSbatAplConst.getAplConstValue(JTUStrConst.BAT_ID_IND) + JTUStrConst.FILE_ID_JGSK_ADJ_RSLT + ".def";
				// 事業者間調整結果受付ファイルオブジェクトを生成する
				JBSbatDefFileUtil  jgskAdjRsltFileDef  = new JBSbatDefFileUtil(jgskAdjRsltDefName, jgskAdjRslt);
				
				// Readerオブジェクトを生成する。
				jgskAdjRslt.createReader();
			
				String line = null; // ファイルレコード
				while (jgskAdjRslt.ready()) 
				{
					// ファイルレコード取得
					line = jgskAdjRslt.readLine();
					
					// ファイルレコード件数カウントアップ
					fileRecordCnt++;
					
					JBSbatServiceInterfaceMap jgskAdjRsltMap = jgskAdjRsltFileDef.lineToObject(line, jgskAdjRslt, fileRecordCnt);
					
					if (jgskAdjRsltMap.isInputErrorFlg())
					{
						//入力ファイルにエラーの場合、処理終了 ⇒※2013/8/27 処理継続に修正
						isErrFlg_2 = true;
						isErrFlg = true;
						resultCd = JTUStrConst.DLYD_BUSINESS_ERR;
						rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0250KE", new String[]{
								Integer.toString(fileRecordCnt),
								"入力レコード"}));
						//break;
						continue;
					}
					
					// レコード変換処理
					toFormatRecord(jgskAdjRsltMap);
					
					// 事業者間調整結果受付の単項目チェック
					isErrFlg = isSingleCheckTUIFE003(jgskAdjRsltMap.getMap(), null);
					if (isErrFlg)
					{
						// チェック時エラーの場合、処理終了 ⇒※2013/8/27 処理継続に修正
						isErrFlg_2 = true;
						resultCd = JTUStrConst.DLYD_BUSINESS_ERR;
						//break;
						continue;
					}
					
					// 番ポ工事テーブルデータ取得条件を設定
					Object[] whereParamBmpKojiSel = new Object[2];
					// 番ポ工事ステータス
					whereParamBmpKojiSel[0] = JTUStrConst.TAJGS_REQ_ZUMI;
					// 申込事業者使用コード 
					whereParamBmpKojiSel[1] = JPCBatCommon.fillHalfSpace(jgskAdjRsltMap.getString(JBSbatTUIFE003.MSKMJIG_USE_CD), 24, true);
					
					// 番ポ工事テーブルデータ取得
					executeTU_T_BMP_KOJI_TU_SELECT_002(whereParamBmpKojiSel);
					
					// 番ポ工事更新
					isErrFlg = isUpdateBmpKoji(jgskAdjRsltMap.getMap());
					if (isErrFlg)
					{
						// チェック時エラーの場合、処理終了 ⇒※2013/8/27 処理継続に修正
						isErrFlg_2 = true;
						resultCd = JTUStrConst.DLYD_BUSINESS_ERR;
						//break;
						continue;
					}
				}
				
				// ファイルクローズ
				if(jgskAdjRslt != null)
				{
					jgskAdjRslt.close();
				}
				
				// ファイルクローズ
				if(rsltFileObj != null)
				{
					rsltFileObj.close();
					rsltFileObj = null;
				}
				
				//if (isErrFlg)
				if (isErrFlg_2)
				{
					// エラーの場合
					// DBロールバック処理  ⇒※2013/8/27 ロールバックなし
					//JBSbatBusinessBase.dbcon.rollback();
					//結果リスト登録
					insertRsltFile();
				}
				
				// ディレイド処理依頼結果更新部品呼び出し
				String dlydTrnReqNo =  dlydTrnMapList.get(i).get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO).toString();
				JPCBatCommon.updateShoriIraiResult(commonItem, dlydTrnReqNo, resultCd, null);
				
				// DBコミット処理
				JBSbatBusinessBase.dbcon.commit();
			}
			
		}
		catch (Exception e)
		{
			// システムエラー時
			// DBロールバック処理
			JBSbatBusinessBase.dbcon.rollback();
			
			// ディレイド処理依頼結果更新部品呼び出し
			String dlydTrnReqNo =  dlydTrnMapList.get(fileCnt).get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO).toString();
			JPCBatCommon.updateShoriIraiResult(commonItem, dlydTrnReqNo, JTUStrConst.DLYD_SYSTEM_ERR, null);
			
			// DBコミット処理
			JBSbatBusinessBase.dbcon.commit();
			
			throw e;
		}
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_TU_T_BMP_KOJI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		db_ZM_M_CD_NM_KANRI.close();
		db_ZM_T_DL_FILE_KANRI.close();
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * レコード変換処理
	 * <br>
	 * @param jgskAdjRsltMap 事業者間調整結果受付のレコードのMap。
	 * @throws Exception
	 */
	private void toFormatRecord(JBSbatServiceInterfaceMap jgskAdjRsltMap) throws Exception
	{
		// 調整可否コードが"2"の場合、"0"に変換する。
		if((JTUStrConst.KH_FAIL_NTT).equals(jgskAdjRsltMap.getString(JBSbatTUIFE003.BMP_KOJI_KH)))
		{
			jgskAdjRsltMap.setString(JBSbatTUIFE003.BMP_KOJI_KH, JTUStrConst.KH_FAIL);
		}
		// 調整受付日をyyyy/MM/ddをyyyyMMddに変換する。
		String adjYmd = JTUBatCommon.toFormatDateCutSymbl(jgskAdjRsltMap.getString(JBSbatTUIFE003.TAJGS_UK_YMD));
		jgskAdjRsltMap.setString(JBSbatTUIFE003.TAJGS_UK_YMD, adjYmd);
		
		// 調整可否回答日時をyyyy/MM/dd HH:mmをyyyyMMddHHmmに変換する。
		String adjAnsYmd = JTUBatCommon.toFormatDateCutSymbl(jgskAdjRsltMap.getString(JBSbatTUIFE003.TK_KH_ANS_YMD));
		jgskAdjRsltMap.setString(JBSbatTUIFE003.TK_KH_ANS_YMD, adjAnsYmd);
		
	}
	
	/**
	 * 番ポ工事更新処理
	 * <br>
	 * @param rsMap  NTT申請結果のレコードが格納されたHashMap。
	 * @return boolean true:異常終了 false:正常終了
	 * @throws Exception
	 */
	private boolean isUpdateBmpKoji(HashMap rsMap) throws Exception
	{
		JBSbatCommonDBInterface mapBmpKoji = new JBSbatCommonDBInterface(); 
		int rowCnt = 0;
		for(mapBmpKoji = db_TU_T_BMP_KOJI.selectNext(); null != mapBmpKoji; mapBmpKoji = db_TU_T_BMP_KOJI.selectNext())
		{
			// デバッグログ出力
			super.logPrint.printDebugLog("BMP_KOJI_NO:" + mapBmpKoji.getString(JBSbatTU_T_BMP_KOJI.BMP_KOJI_NO));
			super.logPrint.printDebugLog("GENE_ADD_DTM:" + mapBmpKoji.getString(JBSbatTU_T_BMP_KOJI.GENE_ADD_DTM));
			
			rowCnt++;
			
			// 番ポ工事テーブルで取得した件数が2件以上の場合、エラー
			if(rowCnt >= 2)
			{
				rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0250KE", new String[]{
						Integer.toString(fileRecordCnt),
						"番ポ工事更新"}));
				return true;
			}
			
			// 事業者間調整結果受付のデータを番ポ工事テーブルに更新する。
			// 更新する値を設定
			Object[] setParamBmpKojiUpd = new Object[16];
			// 番ポ工事ステータス設定
			if (JTUStrConst.KH_PSG.equals(rsMap.get(JBSbatTUIFE003.BMP_KOJI_KH))) 
			{
				// 調整可否が調整可能な場合
				// 番ポ工事ステータス
				setParamBmpKojiUpd[0] = JTUStrConst.NTT_SHIN_STAY;
			}
			else
			{
				// 調整可否が調整不可の場合
				// 番ポ工事ステータス
				setParamBmpKojiUpd[0] = JTUStrConst.TAJGS_CHOSA_FAIL;
				// 提供不可理由コード
				setParamBmpKojiUpd[3] = rsMap.get(JBSbatTUIFE003.TK_FAIL_RSN_CD);
				// 提供不可理由メモ
				setParamBmpKojiUpd[4] = rsMap.get(JBSbatTUIFE003.TK_FAIL_RSN_MEMO);
			}
			
			// 提供可否回答年月日
			setParamBmpKojiUpd[1] = rsMap.get(JBSbatTUIFE003.TK_KH_ANS_YMD).toString().substring(0, 8);
			// 番ポ工事可否
			setParamBmpKojiUpd[2] = rsMap.get(JBSbatTUIFE003.BMP_KOJI_KH);
			// 他事業者未確認フラグ
			setParamBmpKojiUpd[5] = JTUStrConst.CONF_ZUMI;
			// 他事業者受付年月日
			setParamBmpKojiUpd[6] = rsMap.get(JBSbatTUIFE003.TAJGS_UK_YMD);
			// 他事業者担当者名
			setParamBmpKojiUpd[7] = rsMap.get(JBSbatTUIFE003.TAJGS_TNTSHA_NM);
			// 他事業者電話番号
			setParamBmpKojiUpd[8] = rsMap.get(JBSbatTUIFE003.TAJGS_TELNO);
			// 他事業者ＦＡＸ番号
			setParamBmpKojiUpd[9] = rsMap.get(JBSbatTUIFE003.TAJGS_FAX_NO);
			// 他事業者記事欄
			setParamBmpKojiUpd[10] = rsMap.get(JBSbatTUIFE003.TAJGS_KIJIRAN);
			// 他事業者オーダー種別コード
			setParamBmpKojiUpd[11] = rsMap.get(JBSbatTUIFE003.TA_JIGYOSHA_ODR_SBT_CD);
			// 他事業者受付番号
			setParamBmpKojiUpd[12] = rsMap.get(JBSbatTUIFE003.TAJGS_UK_NO);
			// 他事業者組織名
			setParamBmpKojiUpd[13] = rsMap.get(JBSbatTUIFE003.TA_JIGYOSHA_ORG_NM);
			// 事業者間調整結果取込年月日
			setParamBmpKojiUpd[14] = commonItem.getOpeDate();
			// 事業者間調整結果取込年月日時分秒
			setParamBmpKojiUpd[15] = JTUBatCommon.getSysDateTimeStamp();
			
			// 更新条件を設定
			Object[] whereParamBmpKojiUpd = new Object[2];
			// 番ポ工事番号
			whereParamBmpKojiUpd[0] = mapBmpKoji.getString(JBSbatTU_T_BMP_KOJI.BMP_KOJI_NO);
			// 世代登録年月日時分秒
			whereParamBmpKojiUpd[1] = mapBmpKoji.getString(JBSbatTU_T_BMP_KOJI.GENE_ADD_DTM);
			
			// 番ポ工事更新処理
			executeTU_T_BMP_KOJI_PKUPDATE(setParamBmpKojiUpd, whereParamBmpKojiUpd);
			
		}
		
		// 番ポ工事データ存在チェック処理
		return isExistCheckTU_T_BMP_KOJI(rowCnt);
	}
	
	/**
	 *入力情報（事業者間調整結果受付）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return boolean true:異常終了 false:正常終了
	 * @throws Exception
	 */
	private boolean isSingleCheckTUIFE003(HashMap rsMap, HashMap itemvalueMap) throws Exception
	{
		String strErrFlg = "0";
		// 単項目チェックを行います
		String strValue = null;

		// 申込事業者使用コード項目チェック
		strValue = (String)rsMap.get("MSKMJIG_USE_CD");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "24"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0050TE", new String[]{
					Integer.toString(fileRecordCnt),
					"申込事業者使用コード"}));
			//return true;
			strErrFlg = "1";
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji7"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0280TE", new String[]{
					Integer.toString(fileRecordCnt),
					"申込事業者使用コード"}));
			//return true;
			strErrFlg = "1";
		}

		// 調整受付日項目チェック
		strValue = (String)rsMap.get("TAJGS_UK_YMD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0010TE", new String[]{
					Integer.toString(fileRecordCnt),
					"調整受付日"}));
			//return true;
			strErrFlg = "1";
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"year_month_day1"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0020TE", new String[]{
					Integer.toString(fileRecordCnt),
					"調整受付日"}));
			//return true;
			strErrFlg = "1";
		}

		// 調整可否回答日時項目チェック
		strValue = (String)rsMap.get("TK_KH_ANS_YMD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0010TE", new String[]{
					Integer.toString(fileRecordCnt),
					"調整可否回答日時"}));
			//return true;
			strErrFlg = "1";
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"day_hour2"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0180TE", new String[]{
					Integer.toString(fileRecordCnt),
					"調整可否回答日時"}));
			//return true;
			strErrFlg = "1";
		}

		// 調整可否項目チェック
		String bmpKojiKh = (String)rsMap.get("BMP_KOJI_KH");
		// 必須チェック
		if(bmpKojiKh == null || "".equals(bmpKojiKh))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0010TE", new String[]{
					Integer.toString(fileRecordCnt),
					"調整可否"}));
			//return true;
			strErrFlg = "1";
		}
		// 妥当性チェック
		if(!JTUBatCommon.isCodeMaster(commonItem, bmpKojiKh, JZM0171Constant.CD00003, db_ZM_M_CD_NM_KANRI))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0130TE", new String[]{
					Integer.toString(fileRecordCnt),
					"調整可否"}));
			//return true;
			strErrFlg = "1";
		}

		if(JTUStrConst.KH_FAIL.equals(bmpKojiKh))
		{
			// 調整不可理由項目チェック
			strValue = (String)rsMap.get("TK_FAIL_RSN_CD");
			// 必須チェック
			if(strValue == null || "".equals(strValue))
			{
				rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0010TE", new String[]{
						Integer.toString(fileRecordCnt),
						"調整不可理由"}));
				//return true;
				strErrFlg = "1";
			}
			// 桁数チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "20"}))
			{
				rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0050TE", new String[]{
						Integer.toString(fileRecordCnt),
						"調整不可理由"}));
				//return true;
				strErrFlg = "1";
			}
			for (int i = 0; i < strValue.length(); i++) 
			{
				// 妥当性チェック
				if(!JTUBatCommon.isCodeMaster(commonItem, strValue.substring(i, i + 1), JZM0171Constant.CD00007, db_ZM_M_CD_NM_KANRI))
				{
					rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0130TE", new String[]{
							Integer.toString(fileRecordCnt),
							"調整不可理由"}));
					//return true;
					strErrFlg = "1";
				}
			}

			// その他の理由項目チェック
			strValue = (String)rsMap.get("TK_FAIL_RSN_MEMO");
			
			// 桁数チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "30"}))
			{
				rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0050TE", new String[]{
						Integer.toString(fileRecordCnt),
						"その他の理由"}));
				//return true;
				strErrFlg = "1";
			}
			// 属性チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"mix3"}))
			{
				rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0270TE", new String[]{
						Integer.toString(fileRecordCnt),
						"その他の理由"}));
				//return true;
				strErrFlg = "1";
			}
		}
		

		// 移転元担当者名項目チェック
		strValue = (String)rsMap.get("TAJGS_TNTSHA_NM");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0010TE", new String[]{
					Integer.toString(fileRecordCnt),
					"移転元担当者名"}));
			//return true;
			strErrFlg = "1";
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "30"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0050TE", new String[]{
					Integer.toString(fileRecordCnt),
					"移転元担当者名"}));
			//return true;
			strErrFlg = "1";
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"kisyuizon_nmad"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0100TE", new String[]{
					Integer.toString(fileRecordCnt),
					"移転元担当者名"}));
			//return true;
			strErrFlg = "1";
		}

		// 移転元電話番号項目チェック
		strValue = (String)rsMap.get("TAJGS_TELNO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0010TE", new String[]{
					Integer.toString(fileRecordCnt),
					"移転元電話番号"}));
			//return true;
			strErrFlg = "1";
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"tel2"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0160TE", new String[]{
					Integer.toString(fileRecordCnt),
					"移転元電話番号"}));
			//return true;
			strErrFlg = "1";
		}

		// 移転元ＦＡＸ番号項目チェック
		strValue = (String)rsMap.get("TAJGS_FAX_NO");
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"tel2"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0160TE", new String[]{
					Integer.toString(fileRecordCnt),
					"移転元ＦＡＸ番号"}));
			//return true;
			strErrFlg = "1";
		}

		// 移転元記事欄項目チェック
		strValue = (String)rsMap.get("TAJGS_KIJIRAN");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "100"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0050TE", new String[]{
					Integer.toString(fileRecordCnt),
					"移転元記事欄"}));
			//return true;
			strErrFlg = "1";
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"mix3"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0270TE", new String[]{
					Integer.toString(fileRecordCnt),
					"移転元記事欄"}));
			//return true;
			strErrFlg = "1";
		}

		// 契約者回線番号項目チェック
		strValue = (String)rsMap.get("TA_JGYOSHA_UR_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0010TE", new String[]{
					Integer.toString(fileRecordCnt),
					"契約者回線番号"}));
			//return true;
			strErrFlg = "1";
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "10"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0050TE", new String[]{
					Integer.toString(fileRecordCnt),
					"契約者回線番号"}));
			//return true;
			strErrFlg = "1";
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"tel2"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0160TE", new String[]{
					Integer.toString(fileRecordCnt),
					"契約者回線番号"}));
			//return true;
			strErrFlg = "1";
		}

		// オーダ種別項目チェック
		strValue = (String)rsMap.get("TA_JIGYOSHA_ODR_SBT_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0010TE", new String[]{
					Integer.toString(fileRecordCnt),
					"オーダ種別"}));
			//return true;
			strErrFlg = "1";
		}
		// 妥当性チェック
		if(!JTUBatCommon.isCodeMaster(commonItem, strValue, JZM0171Constant.CD00453, db_ZM_M_CD_NM_KANRI))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0130TE", new String[]{
					Integer.toString(fileRecordCnt),
					"オーダ種別"}));
			//return true;
			strErrFlg = "1";
		}

		// 調整受付番号項目チェック
		strValue = (String)rsMap.get("TAJGS_UK_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0010TE", new String[]{
					Integer.toString(fileRecordCnt),
					"調整受付番号"}));
			//return true;
			strErrFlg = "1";
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu1", "10"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0050TE", new String[]{
					Integer.toString(fileRecordCnt),
					"調整受付番号"}));
			//return true;
			strErrFlg = "1";
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0080TE", new String[]{
					Integer.toString(fileRecordCnt),
					"調整受付番号"}));
			//return true;
			strErrFlg = "1";
		}

		// 移転元組織名項目チェック
		strValue = (String)rsMap.get("TA_JIGYOSHA_ORG_NM");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0010TE", new String[]{
					Integer.toString(fileRecordCnt),
					"移転元組織名"}));
			//return true;
			strErrFlg = "1";
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "20"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0050TE", new String[]{
					Integer.toString(fileRecordCnt),
					"移転元組織名"}));
			//return true;
			strErrFlg = "1";
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"zenkaku"}))
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0060TE", new String[]{
					Integer.toString(fileRecordCnt),
					"移転元組織名"}));
			//return true;
			strErrFlg = "1";
		}
		
		if("1".equals(strErrFlg)){
			return true;
		}
		
		return false;
	}
	
	/**
	 *入力情報（番ポ工事）の存在チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.存在チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		nRsCnt:レコード数
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 * </pre>
	 * <p>
	 * @param nRsCnt 取得件数。
	 * @return boolean true:異常終了 false:正常終了
	 */
	private boolean isExistCheckTU_T_BMP_KOJI(int nRsCnt) throws Exception
	{
		// 存在チェックを行います(SQLKEY=TU_SELECT_002)
		if(nRsCnt == 0)
		{
			rsltFileObj.print(JBSbatLogPrintControl.getMessage("ETUB0260KE", new String[]{
					Integer.toString(fileRecordCnt),
					"番ポ工事情報"}));
			return true;
		}
		
		return false;
	}
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/

	/**
	 * SQLKEY(TU_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	番ポ工事ステータス
	 *		 	申込事業者使用コード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeTU_T_BMP_KOJI_TU_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_TU_T_BMP_KOJI.selectBySqlDefine(paramList, TU_T_BMP_KOJI_TU_SELECT_002);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	番ポ工事ステータス				BMP_KOJI_STAT
	 *		 	提供可否回答年月日				TK_KH_ANS_YMD
	 *		 	番ポ工事可否				BMP_KOJI_KH
	 *		 	提供不可理由コード				TK_FAIL_RSN_CD
	 *		 	提供不可理由メモ				TK_FAIL_RSN_MEMO
	 *		 	他事業者未確認フラグ				TA_JIGYOSHA_MI_CFM_FLG
	 *		 	他事業者受付年月日				TAJGS_UK_YMD
	 *		 	他事業者担当者名				TAJGS_TNTSHA_NM
	 *		 	他事業者電話番号				TAJGS_TELNO
	 *		 	他事業者ＦＡＸ番号				TAJGS_FAX_NO
	 *		 	他事業者記事欄				TAJGS_KIJIRAN
	 *		 	他事業者オーダー種別コード				TA_JIGYOSHA_ODR_SBT_CD
	 *		 	他事業者受付番号				TAJGS_UK_NO
	 *		 	他事業者組織名				TA_JIGYOSHA_ORG_NM
	 *		 	事業者間調整結果取込年月日				JGSK_ADJ_RSLT_TRKM_YMD
	 *		 	事業者間調整結果取込年月日時分秒				JGSK_ADJ_RSLT_TRKM_DTM
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	BMP_KOJI_NO
	 *		 	GENE_ADD_DTM
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeTU_T_BMP_KOJI_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("BMP_KOJI_STAT", setParam[0]);
		setMap.setValue("TK_KH_ANS_YMD", setParam[1]);
		setMap.setValue("BMP_KOJI_KH", setParam[2]);
		setMap.setValue("TK_FAIL_RSN_CD", setParam[3]);
		setMap.setValue("TK_FAIL_RSN_MEMO", setParam[4]);
		setMap.setValue("TA_JIGYOSHA_MI_CFM_FLG", setParam[5]);
		setMap.setValue("TAJGS_UK_YMD", setParam[6]);
		setMap.setValue("TAJGS_TNTSHA_NM", setParam[7]);
		setMap.setValue("TAJGS_TELNO", setParam[8]);
		setMap.setValue("TAJGS_FAX_NO", setParam[9]);
		setMap.setValue("TAJGS_KIJIRAN", setParam[10]);
		setMap.setValue("TA_JIGYOSHA_ODR_SBT_CD", setParam[11]);
		setMap.setValue("TAJGS_UK_NO", setParam[12]);
		setMap.setValue("TA_JIGYOSHA_ORG_NM", setParam[13]);
		setMap.setValue("JGSK_ADJ_RSLT_TRKM_YMD", setParam[14]);
		setMap.setValue("JGSK_ADJ_RSLT_TRKM_DTM", setParam[15]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("BMP_KOJI_NO", whereParam[0]);
		whereMap.setValue("GENE_ADD_DTM", whereParam[1]);

		// DBアクセスを実行します
		db_TU_T_BMP_KOJI.updateByPrimaryKeys(whereMap, setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 結果リスト作成
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 * @throws Exception
	 */
	private boolean createRsltFile() throws Exception
	{
		if(rsltFileObj == null)
		{
			// 結果リスト名取得
			String trkmRslt = "TUJgskAdjRsltTrkm";
			
			// 結果リスト作成
			rsltFileName = trkmRslt + JTUBatCommon.getSysDate() + ".txt";
			
			// 結果リストオブジェクトを生成する
			rsltFileObj = JTUBatCommon.createBusinessFileUtil(commonItem.getFreeItem() + "/" + rsltFileName, 
																		JTUStrConst.CHAR_SET_WIN31J, 
																		JTUStrConst.LINE_CRLF, 
																		JTUStrConst.CONMA);
			
		}
		
		return true;
	}
	
	/**
	 * 結果リスト登録
	 * @throws Exception
	 */
	private void insertRsltFile() throws Exception
	{
		String delYmd = JTUBatCommon.addDay(super.opeDate, Integer.valueOf(JTUStrConst.FILE_DEL_DAY_CNT_TRKM));
		// 結果ファイル登録処理
		JTUBatCommon.createFile(commonItem,
								JTUStrConst.SYORI_KANRI_NUM_JGTRKM,
								new Long(1),
								null,
								commonItem.getFreeItem(),
								rsltFileName,
								delYmd,
								db_ZM_T_DL_FILE_KANRI,
								false);
	}
	
}
