/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKnytcsSend
*	ソースファイル名	：JBSbatKKKnytcsSend.java
*	作成者				：FJ)柳
*	作成日				：2016年01月12日
*＜機能概要＞
*　契約内容通知書ファイル送信部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v23.00.00	2016/01/12	FJ)柳		【ANK-2737-00-00】新規作成
*	v23.00.01	2016/02/08	FJ)柳		【IT1-2016-0000020】インターフェイスIDを修正
*	v27.00.00	2016/09/16	FJ)中原		【ANK-2985-00-00】 消費者保護ルール見直し追加対応STEP3
*	v54.00.00	2021/08/12	GDC)j.hortilano		【ANK-4069-00-00】EOL対応(バッチ・DBサーバリプレース対応)
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSBatKKShoriIraiUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCCbatShoriIraiUtil;
import eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ;
import eo.common.util.JKKStringUtil;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.application.JCCbatFrameworkException;

/**
* 契約内容通知書ファイルを守口印刷へ送信する。
*<BR>
* @author FJ)柳
*/
public class JBSbatKKKnytcsSend extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** インターフェイスID(契約内容通知書ファイル) */
// IT1-2016-0000020 2016/02/08 MOD START
// private static final String KNYTCS_IF_ID = "KKIFM688";
	private static final String KNYTCS_IF_ID = "KKIFE320";
// IT1-2016-0000020 2016/02/08 MOD END
	// ANK-2985-00-00 ADD START
	/** ディレイド処理結果：完了 .*/
	private static final String SUCCESS = "1";
	/** ディレイド処理結果：業務エラー .*/
	private static final String WORK_ERROR = "2";
	/** ディレイド処理結果：システムエラー .*/
	private static final String SYS_ERROR = "3";
	/** ディレイド処理結果コード .*/
	private String mRES_CD = null;
	
	/** ディレイドジョブ依頼ＩＤ .*/
	private String mREQ_JOB_ID = null;
	
	/** シェル処理結果コード：正常 .*/
	private static final String RES_CD_OK = "0";
	/** シェル処理結果コード：業務エラー：8 .*/
	private static final String RES_CD_8 = "8";
	/** シェル処理結果コード：業務エラー：127 .*/
	private static final String RES_CD_127 = "127";
	// ANK-2985-00-00 ADD END

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// ANK-2985-00-00 ADD START
		// FreeパラメータよりインターフェイスIDとファイル名を取得
		// セパレータはセミコロン（;）
		String[] freeItems = super.freeItem.split(";");
		if (freeItems != null && freeItems.length == 3)
		{
			// ジョブＩＤ取得
			this.mREQ_JOB_ID = freeItems[1];
			
			// 処理結果を取得
			String result_cd = freeItems[2];
			if(RES_CD_OK.equals(result_cd))
			// 処理結果が「0」
			{
				// ディレイド処理結果 正常完了
				this.mRES_CD = SUCCESS;
			}
			else if(RES_CD_8.equals(result_cd) || RES_CD_127.equals(result_cd))
			// 処理結果が「8」もしくは「127」
			{
				//ディレイド処理結果 業務エラー
				this.mRES_CD = WORK_ERROR;
			}
			else
			// 処理結果が不明なコード
			{
				// ディレイド処理結果 システムエラー
				this.mRES_CD = SYS_ERROR;
			}
			
			// ディレイド処理依頼取得
			ArrayList<HashMap<String,Object>> arrayList = JBSBatKKShoriIraiUtil.getShoriIraiInfo(super.commonItem, mREQ_JOB_ID);
			if(arrayList != null)
			{

				// 取得した件数分、更新する。（２重起動防止しているので１件のはず）
				for (HashMap<String, Object> resutlMap : arrayList) {
					String shori_id = resutlMap.get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO).toString();
					if(! JKKStringUtil.isNullBlank(shori_id)) {
						// ディレイド処理結果更新
						JCCbatShoriIraiUtil.updateShoriIraiResult(super.commonItem, shori_id, this.mRES_CD, null);
					}
				}
				
				// 先行ＪＯＢが正常終了しているかチェック
				if(!RES_CD_OK.equals(result_cd) && !RES_CD_8.equals(result_cd))
				{
					// 先行ＪＯＢの処理結果が正常、マイナーエラー以上はこのバッチを終了
					return null;
				}
			}
			else
			{
				// 処理依頼がないのでこのバッチを終了
				return null;
			}
		}
		// ANK-2985-00-00 ADD END

		// ANK-2985-00-00 MOD START
		// ファイル名リスト作成
		//String inputFileName = commonItem.getFreeItem();
		String inputFileName = freeItems[0];
		// ANK-2985-00-00 MOD END
		ArrayList<String> fileNmList = new ArrayList<String>();
		fileNmList.add(inputFileName);
		
		// ANK-4069-00-00 DEL START
		//// 処理結果詳細格納マップ作成
		//HashMap<String, Object> resMap = new HashMap<String, Object>();
		//
		//try
		//{
		//	boolean res = JCCBatCommon.putFTP(super.commonItem, fileNmList, KNYTCS_IF_ID, resMap);
		//	
		//	// エラー発生時
		//	if (!res)
		//	{
		//		// エラーコード
		//		String errCd = "";
		//		// 送信ファイル名
		//		String fileName = "";
		//		
		//		// 接続エラー詳細
		//		HashMap<String, Object> errDtl = new HashMap<String, Object>();
		//
		//		String errKbn = resMap.get("ERR_KBN").toString();
		//
		//		// 接続エラーの場合
		//		if ("1".equals(errKbn))
		//		{
		//			errDtl = (HashMap)resMap.get("CONNECT_ERR");
		//			if(errDtl != null)
		//			{
		//				// エラーコードを設定
		//				errCd = errDtl.get("ERR_CD").toString();
		//			}
		//			super.logPrint.printDebugLog("ファイル転送失敗" + errCd);
		//			throw new JBSbatBusinessException("ESCB0110CE", new String[]{errCd});
		//		// ファイルエラーの場合
		//		} else if ("2".equals(errKbn))
		//		{
		//			ArrayList<HashMap> fileErr = (ArrayList<HashMap>)resMap.get("FILE_ERR");
		//			errDtl = (HashMap)fileErr.get(0);
		//			if(errDtl != null)
		//			{
		//				// エラーコードを設定
		//				errCd = errDtl.get("ERR_CD").toString();
		//				// ファイル名を設定
		//				fileName = errDtl.get("FILE_NAME").toString();
		//			}
		//			super.logPrint.printDebugLog("ファイル転送失敗" + "ファイル名" + fileName + "エラーコード" + errCd);
		//			throw new JBSbatBusinessException("ESCB0010CE", new String[]{fileName, errCd});
		//		}
		//	}
		//	
		//}
		//catch(Exception e)
		//{
		//	throw new JCCbatFrameworkException("契約内容通知書ファイル送信で例外が発生しました。" + e);
		//}
		// ANK-4069-00-00 DEL END

		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
}
