/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACInsentetivePrcInfoSaksei
*	ソースファイル名	：JBSbatACInsentetivePrcInfoSaksei.java
*	作成者				：FJ）　
*	作成日				：2018年04月24日
*＜機能概要＞
*　インセンティブ料金情報作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v37.00.00	2018/04/24  富士通		ANK-3366-00-00 新規作成 ｅｏ光設備卸対応
*	v37.01.00	2018/05/08  富士通		IT2-2018-0000037 インセンティブ料金情報の新規申込件数集計エラー
*	v39.00.00	2018/09/25  富士通		ANK-3478-00-00 新規作成 ｅｏ光設備卸対応(サービス開始対応)
*	v39.00.01	2018/10/04  富士通		ANK-3478-00-00 ｅｏ光設備卸対応(サービス開始対応)
*	v39.00.02	2018/11/13  富士通		IT1-2018-0000198 卸先事業者インセンティブ料金情報リストイメージ不備対応
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatSchdlUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JACBatOrsInsSvcInfoUtil;
import eo.business.util.file.JBSbatACIFM300;
import eo.business.util.file.JBSbatACIFM301;
import eo.business.util.file.JBSbatACIFM302;
import eo.business.util.file.JBSbatACIFM303;
import eo.business.util.file.JBSbatACIFM305;
import eo.business.util.file.JBSbatACIFM320;
import eo.business.util.file.JBSbatACIFM314;
import eo.business.util.file.JBSbatACIFM318;
import eo.business.util.table.JBSbatKK_M_SVC;
import eo.common.constant.JACStrConst;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
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 JBSbatACInsentetivePrcInfoSaksei extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	
	/** 入力ファイル定義 */
	private static final String PARAM_IND = "IND";
	
	/** 出力ファイル定義 */
	private static final String PARAM_OTD = "OTD";
	
	/** 卸先事業者抽出対象リスト */
	private  ArrayList<JBSbatServiceInterfaceMap> orosiJgsyaCurrentList = null;
	
	/** 設備卸請求料金情報抽出リスト */
	private  ArrayList<JBSbatServiceInterfaceMap> stborsiSeikyList = null;
	
	/** インセンティブ料金情報（新規申込料金）リスト */
	private ArrayList<JBSbatServiceInterfaceMap> insentiveNewMskmPrcList = null;
	
	/**  インセンティブ料金情報（債権譲渡手数料）リスト */
	private ArrayList<JBSbatServiceInterfaceMap> insentiveSaikenJotoPrcList = null;

	// v39.00.00 ADD START
	/**  インセンティブ料金（継続利用契約料金）リスト */
	private ArrayList<JBSbatServiceInterfaceMap> insentiveKeizokuUseKeiPrcList = null;

	/**  インセンティブ料金（年間獲得数料金）リスト */
	private ArrayList<JBSbatServiceInterfaceMap> insentiveYearKeiKaktkCntPrcList = null;

	/**  インセンティブ料金（月間獲得数料金）リスト */
	private ArrayList<JBSbatServiceInterfaceMap> insentiveMonKektkcnPrcList = null;

	// v39.00.00 ADD END
	
	/** 退避．サービスマスタマップ */
	private HashMap<String, String> scvNmMap = null;
	
	/**  退避．群月初日 */
	private String tmpCycFst = null;
	
	/**  退避．群月末日 */
	private String tmpCycEnd = null;
	
	/**  退避．対象年月 */
	private String seikyYm = null;
	
	/**  入力ファイル1定義 */
	private String inputDef1 = null;
	
	/**  入力ファイル1パス */
	private String inputFilePath1 = null;
	
	/**  出力ファイル定義 */
	private String outputDef1 = null;
	
	/**  出力ファイルパス */
	private String outputFilePath1 = null;
	
	/** テーブル(料金項目抽出変換)*/
	private static final String D_TBL_NAME_KK_M_SVC = "KK_M_SVC";

	/** SQL定義キー(AC_SELECT_028)*/
	private static final String KK_M_SVC_AC_SELECT_001 = "AC_SELECT_001";

	/** テーブルアクセスクラス(料金項目抽出変換)*/
	private JBSbatSQLAccess db_KK_M_SVC = null;

	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// フリー項目より以下を取得
		String[] freeParam = commonItem.getFreeItem().split(";");
		
		// ・入力ファイル1定義(入力ファイル1･2共通定義)
		inputDef1 = freeParam[0];
		// ・入力ファイル1パス（卸先事業者ALD（全件）抽出）
		inputFilePath1 = freeParam[1];
		// ・入力ファイル2パス（卸先事業者ALD（カレント）抽出）
		String inputFilePath2 = freeParam[2];
		// ・入力ファイル3定義
		String inputDef3 = freeParam[3];
		// ・入力ファイル3パス（設備卸請求料金情報）
		String inputFilePath3 = freeParam[4];
		// ・入力ファイル4定義
		String inputDef4 = freeParam[5];
		// ・入力ファイル4パス（インセンティブ料金（新規申込料金））
		String inputFilePath4 = freeParam[6];
		// ・入力ファイル5定義
		String inputDef5 = freeParam[7];
		// ・入力ファイル5パス（インセンティブ料金（債権譲渡金額））
		String inputFilePath5 = freeParam[8];

		// v39.00.00 ADD START
		// ・入力ファイル6定義
		String inputDef6 = freeParam[11];
		// ・入力ファイル6パス（インセンティブ料金（継続利用契約料金））
		String inputFilePath6 = freeParam[12];
		// ・入力ファイル7定義
		String inputDef7 = freeParam[13];
		// ・入力ファイル7パス（インセンティブ料金（年間獲得数料金））
		String inputFilePath7 = freeParam[14];
		// ・入力ファイル8定義
		String inputDef8 = freeParam[15];
		// ・入力ファイル8パス（インセンティブ料金（月間獲得数料金））
		String inputFilePath8 = freeParam[16];
		// v39.00.00 ADD END

		// ・出力ファイル定義
		outputDef1 = freeParam[9];
		// ・出力ファイルパス（インセンティブ料金情報）
		outputFilePath1 = freeParam[10];
		
		
		// 入力ファイルをリストに入れる（卸先事業者抽出対象（適用終了含む）ファイル以外）
		
		// 入力ファイルオブジェクトの生成@(卸先事業者抽出対象ファイル)
		JBSbatInputFileUtil orosiJgsyaCurrentFile = new JBSbatInputFileUtil(inputFilePath2);
		orosiJgsyaCurrentFile.setLine(JACStrConst.LINE_CRLF);
		orosiJgsyaCurrentFile.setEncode(JACStrConst.ENCODE_SJIS);
		
		orosiJgsyaCurrentFile.createReader();
		
		// 入力定義ファイルオブジェクトの生成
		String orosiChstDefNm = JBSbatAplConst.getAplConstValue(PARAM_IND) + inputDef1;
		JBSbatDefFileUtil orosiChstDef = new JBSbatDefFileUtil(orosiChstDefNm, orosiJgsyaCurrentFile);
		
		// 卸先事業者抽出対象ファイルをリストに入れる
		orosiJgsyaCurrentList = new ArrayList<JBSbatServiceInterfaceMap>();
		
		//ファイルのレコードを全て読む
		while (orosiJgsyaCurrentFile.ready())
		{
			// 1レコードを取得
			JBSbatServiceInterfaceMap orosiJgsyaCurrentLine =
				orosiChstDef.lineToObject(orosiJgsyaCurrentFile.readLine(), orosiJgsyaCurrentFile, 0);
			// リストに1レコードずつ入れる
			orosiJgsyaCurrentList.add(orosiJgsyaCurrentLine);
			
		}
		
		// 入力ファイルオブジェクトの生成A(設備卸請求料金情報)
		JBSbatInputFileUtil stborsiSeikyFile = new JBSbatInputFileUtil(inputFilePath3);
		stborsiSeikyFile.setLine(JACStrConst.LINE_CRLF);
		stborsiSeikyFile.setEncode(JACStrConst.ENCODE_SJIS);
		
		stborsiSeikyFile.createReader();
		
		// 入力定義ファイルオブジェクトの生成
		String seikyChstDefNm = JBSbatAplConst.getAplConstValue(PARAM_IND) + inputDef3;
		JBSbatDefFileUtil seikyChstDef = new JBSbatDefFileUtil(seikyChstDefNm, stborsiSeikyFile);
		
		// 卸先事業者抽出対象ファイルをリストに入れる
		stborsiSeikyList = new ArrayList<JBSbatServiceInterfaceMap>();
		
		//ファイルのレコードを全て読む
		while (stborsiSeikyFile.ready())
		{
			// 1レコードを取得
			JBSbatServiceInterfaceMap stborsiSeikyLine =
				seikyChstDef.lineToObject(stborsiSeikyFile.readLine(), stborsiSeikyFile, 0);
			// リストに1レコードずつ入れる
			stborsiSeikyList.add(stborsiSeikyLine);
			
		}
		
		// 入力ファイルオブジェクトの生成B(インセンティブ料金情報（新規申込料金）)
		JBSbatInputFileUtil insentiveNewMskmPrcFile = new JBSbatInputFileUtil(inputFilePath4);
		insentiveNewMskmPrcFile.setLine(JACStrConst.LINE_CRLF);
		insentiveNewMskmPrcFile.setEncode(JACStrConst.ENCODE_SJIS);
		
		insentiveNewMskmPrcFile.createReader();
		
		// 入力定義ファイルオブジェクトの生成
		String insentiveNewMskmPrcDefNm = JBSbatAplConst.getAplConstValue(PARAM_IND) + inputDef4;
		JBSbatDefFileUtil insentiveNewMskmPrcDef = new JBSbatDefFileUtil(insentiveNewMskmPrcDefNm, insentiveNewMskmPrcFile);
		
		// インセンティブ料金情報（新規申込料金）ファイルをリストに入れる
		insentiveNewMskmPrcList = new ArrayList<JBSbatServiceInterfaceMap>();
		
		while (insentiveNewMskmPrcFile.ready())
		{
			// 1レコードを取得
			JBSbatServiceInterfaceMap insentiveNewMskmPrcLine =
				insentiveNewMskmPrcDef.lineToObject(insentiveNewMskmPrcFile.readLine(), insentiveNewMskmPrcFile, 0);
			// リストに1レコードずつ入れる
			insentiveNewMskmPrcList.add(insentiveNewMskmPrcLine);
		}
		
		// 入力ファイルオブジェクトの生成C(インセンティブ料金情報（債権譲渡金額）)
		JBSbatInputFileUtil insentiveSaikenJotoPrcFile = new JBSbatInputFileUtil(inputFilePath5);
		
		insentiveSaikenJotoPrcFile.setLine(JACStrConst.LINE_CRLF);
		insentiveSaikenJotoPrcFile.setEncode(JACStrConst.ENCODE_SJIS);
		
		insentiveSaikenJotoPrcFile.createReader();
		
		// 入力定義ファイルオブジェクトの生成
		String insentiveSaikenJotoPrcDefNm = JBSbatAplConst.getAplConstValue(PARAM_IND) + inputDef5;
		JBSbatDefFileUtil insentiveSaikenJotoPrcDef = new JBSbatDefFileUtil(insentiveSaikenJotoPrcDefNm, insentiveSaikenJotoPrcFile);
		
		// インセンティブ料金情報（債権譲渡金額）ファイルをリストに入れる
		insentiveSaikenJotoPrcList = new ArrayList<JBSbatServiceInterfaceMap>();
		
		while (insentiveSaikenJotoPrcFile.ready())
		{
			// 1レコードを取得
			JBSbatServiceInterfaceMap insentiveSaikenJotoPrcLine =
				insentiveSaikenJotoPrcDef.lineToObject(insentiveSaikenJotoPrcFile.readLine(), insentiveSaikenJotoPrcFile, 0);
			// リストに1レコードずつ入れる
			insentiveSaikenJotoPrcList.add(insentiveSaikenJotoPrcLine);
			
		}
		
		// v39.00.00 ADD START
		// 入力ファイルオブジェクトの生成D(インセンティブ料金（継続利用契約料金）)
		JBSbatInputFileUtil insentiveKeizokuUseKeiPrcFile = new JBSbatInputFileUtil(inputFilePath6);
		
		insentiveKeizokuUseKeiPrcFile.setLine(JACStrConst.LINE_CRLF);
		insentiveKeizokuUseKeiPrcFile.setEncode(JACStrConst.ENCODE_SJIS);
		
		insentiveKeizokuUseKeiPrcFile.createReader();
		
		// 入力定義ファイルオブジェクトの生成
		String insentiveKeizokuUseKeiPrcDefNm = JBSbatAplConst.getAplConstValue(PARAM_IND) + inputDef6;
		JBSbatDefFileUtil insentiveKeizokuUseKeiPrcDef = new JBSbatDefFileUtil(insentiveKeizokuUseKeiPrcDefNm, insentiveKeizokuUseKeiPrcFile);
		
		// インセンティブ料金情報（債権譲渡金額）ファイルをリストに入れる
		insentiveKeizokuUseKeiPrcList = new ArrayList<JBSbatServiceInterfaceMap>();
		
		while (insentiveKeizokuUseKeiPrcFile.ready())
		{
			// 1レコードを取得
			JBSbatServiceInterfaceMap insentiveKeizokuUseKeiPrcLine =
				insentiveKeizokuUseKeiPrcDef.lineToObject(insentiveKeizokuUseKeiPrcFile.readLine(), insentiveKeizokuUseKeiPrcFile, 0);
			// リストに1レコードずつ入れる
			insentiveKeizokuUseKeiPrcList.add(insentiveKeizokuUseKeiPrcLine);
			
		}

		// 入力ファイルオブジェクトの生成E(インセンティブ料金（年間獲得数料金）)
		JBSbatInputFileUtil insentiveYearKeiKaktkCntPrcFile = new JBSbatInputFileUtil(inputFilePath7);
		
		insentiveYearKeiKaktkCntPrcFile.setLine(JACStrConst.LINE_CRLF);
		insentiveYearKeiKaktkCntPrcFile.setEncode(JACStrConst.ENCODE_SJIS);
		
		insentiveYearKeiKaktkCntPrcFile.createReader();
		
		// 入力定義ファイルオブジェクトの生成
		String insentiveYearKeiKaktkCntPrcDefNm = JBSbatAplConst.getAplConstValue(PARAM_IND) + inputDef7;
		JBSbatDefFileUtil insentiveYearKeiKaktkCntPrcDef = new JBSbatDefFileUtil(insentiveYearKeiKaktkCntPrcDefNm, insentiveYearKeiKaktkCntPrcFile);
		
		// インセンティブ料金情報（債権譲渡金額）ファイルをリストに入れる
		insentiveYearKeiKaktkCntPrcList = new ArrayList<JBSbatServiceInterfaceMap>();
		
		while (insentiveYearKeiKaktkCntPrcFile.ready())
		{
			// 1レコードを取得
			JBSbatServiceInterfaceMap insentiveYearKeiKaktkCntPrcLine =
				insentiveYearKeiKaktkCntPrcDef.lineToObject(insentiveYearKeiKaktkCntPrcFile.readLine(), insentiveYearKeiKaktkCntPrcFile, 0);
			// リストに1レコードずつ入れる
			insentiveYearKeiKaktkCntPrcList.add(insentiveYearKeiKaktkCntPrcLine);
			
		}

		// 入力ファイルオブジェクトの生成F(インセンティブ料金（月間獲得数料金）)
		JBSbatInputFileUtil insentiveMonKektkcnPrcFile = new JBSbatInputFileUtil(inputFilePath8);
		
		insentiveMonKektkcnPrcFile.setLine(JACStrConst.LINE_CRLF);
		insentiveMonKektkcnPrcFile.setEncode(JACStrConst.ENCODE_SJIS);
		
		insentiveMonKektkcnPrcFile.createReader();
		
		// 入力定義ファイルオブジェクトの生成
		String insentiveMonKektkcnPrcDefNm = JBSbatAplConst.getAplConstValue(PARAM_IND) + inputDef8;
		JBSbatDefFileUtil insentiveMonKektkcnPrcDef = new JBSbatDefFileUtil(insentiveMonKektkcnPrcDefNm, insentiveMonKektkcnPrcFile);
		
		// インセンティブ料金情報（債権譲渡金額）ファイルをリストに入れる
		insentiveMonKektkcnPrcList = new ArrayList<JBSbatServiceInterfaceMap>();
		
		while (insentiveMonKektkcnPrcFile.ready())
		{
			// 1レコードを取得
			JBSbatServiceInterfaceMap insentiveMonKektkcnPrcLine =
				insentiveMonKektkcnPrcDef.lineToObject(insentiveMonKektkcnPrcFile.readLine(), insentiveMonKektkcnPrcFile, 0);
			// リストに1レコードずつ入れる
			insentiveMonKektkcnPrcList.add(insentiveMonKektkcnPrcLine);
			
		}
		// v39.00.00 ADD END

		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// DBアクセスクラスを生成します
		db_KK_M_SVC = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_SVC);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// 料金スケジュール定義アクセス部品初期処理
		JACbatSchdlUtil schdlUtil = new JACbatSchdlUtil(commonItem);
		
		// ANK-3478-00-00 DEL START
//		try
//		{
//			// 請求年月を取得する
//			seikyYm = schdlUtil.getBillDate(super.opeDate, JACStrConst.EVENT_CD_RYOKIN_KEISAN_YMD);
//			
//			// 請求年月から、利用開始終了日取得
//			String[] strEndYmd = schdlUtil.getUseStrEnd(seikyYm, JACStrConst.EVENT_CD_USE_STAYMD, JACStrConst.EVENT_CD_USE_ENDYMD);
//			
//			this.tmpCycFst = strEndYmd[0];	// 群月初日
//			this.tmpCycEnd = strEndYmd[1];	// 群月末日
//			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][群月初日：" + tmpCycFst + "]");
//			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][群月末日：" + tmpCycEnd + "]");
//		}
//		finally
//		{
//			// 料金スケジュール定義アクセス部品クローズ
//			schdlUtil.close();
//		}
		// ANK-3478-00-00 DEL END
		
		// IT1-2018-0000198 DEL START
		//// サービスマップを作成
		//this.makeSvcMap();
		// IT1-2018-0000198 DEL END
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap 入力電文
	 * @param tranMap 利用料金情報
	 * @param seikyYm 請求年月
	 * @param outputInItem  入力情報
	 * @return JBSbatOutputItem 出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		JBSbatOutputItem outputItem = new JBSbatOutputItem(); // 出力共通電文

		
		// 入力ファイルオブジェクトの生成@(卸先事業者抽出対象（適用終了含む）ファイル)
		JBSbatInputFileUtil orosiJgsyaAllFile = new JBSbatInputFileUtil(inputFilePath1);
		// 改行コードの設定
		orosiJgsyaAllFile.setLine(JACStrConst.LINE_CRLF);
		// 文字コードの設定
		orosiJgsyaAllFile.setEncode(JACStrConst.ENCODE_SJIS);
		
		orosiJgsyaAllFile.createReader();
		
		// 入力定義ファイルオブジェクトの生成
		String orosiJgsyaAllDefNm = JBSbatAplConst.getAplConstValue(PARAM_IND) + inputDef1;
		JBSbatDefFileUtil orosiJgsyaAllDef = new JBSbatDefFileUtil(orosiJgsyaAllDefNm, orosiJgsyaAllFile);
		
		//ファイルのレコードを全て読む
		while(orosiJgsyaAllFile.ready())	
		{	
			// 変数宣言
			boolean outFlag = false;
			
			// 1レコードを取得
			JBSbatServiceInterfaceMap orosiJgsyaAllLine =
				orosiJgsyaAllDef.lineToObject(orosiJgsyaAllFile.readLine(), orosiJgsyaAllFile, 0);
			
			// キー項目の設定　（卸先事業者コード）
			String key = orosiJgsyaAllLine.getString(JBSbatACIFM305.ORSJGS_CD);
			
			// 出力判定１：卸先事業者抽出対象ファイルを検索
			for (JBSbatServiceInterfaceMap orosiJgsyaCurrentLine : orosiJgsyaCurrentList)
			{
				// keyが存在する場合
				if(key.equals(orosiJgsyaCurrentLine.get(JBSbatACIFM305.ORSJGS_CD)))
				{
					// 出力ファイル編集
					makeOutput(orosiJgsyaAllLine,outputItem);
					
					// 出力済フラグの設定
					outFlag = true;
					
					break;
				}
			}
			
			// 出力済フラグの判定
			if(outFlag != true)
			{
				// 出力済フラグがfalseの場合
				// 出力判定２：インセンティブ料金連携情報抽出ファイルを検索
				for(JBSbatServiceInterfaceMap stborosiseikyiLine : stborsiSeikyList)
				{
					// keyが存在する場合
					if(key.equals(stborosiseikyiLine.get(JBSbatACIFM301.ORSJGS_CD)))
					{
						// 出力ファイル編集
						makeOutput(orosiJgsyaAllLine,outputItem);
						
						break;
					}
				}
			}
		}
		
		
		// ファイルの出力処理呼び出し
		outFile(outputItem);
		
		return null;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_M_SVC.close();
		
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/

	/**
	 * SQLKEY(KK_M_SVC_AC_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 executeKK_M_SVC_AC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_M_SVC.selectBySqlDefine(paramList, KK_M_SVC_AC_SELECT_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
// IT1-2018-0000198 DEL START
//	/**
//	 * サービスマップの作成
//	 * @throws Exception
//	 */
//	private void makeSvcMap() throws Exception
//	{
//		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeSvcMap]");
//		
//		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//		
//		// バッチ運用日
//		paramList.setValue(super.opeDate);
//		
//		// SQL実行
//		executeKK_M_SVC_AC_SELECT_001(paramList.getList().toArray());
//		
//		JBSbatCommonDBInterface dbMap = db_KK_M_SVC.selectNext();
//		
//		// サービスマップの作成
//		scvNmMap = new HashMap<String, String>();
//		
//		// 検索結果0件の場合
//		if(null == dbMap)
//		{
//			// DB未存在エラー
//			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getOrosiInsentive][DB未存在エラー]");
//			String[] outCntMsg = {JBSbatKK_M_SVC.TABLE_NAME, JBSbatKK_M_SVC.SVC_CD};
//			// エラーログ出力（エラーコード："EACB0250CE"（DB未存在エラー））
//			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0250CE, outCntMsg);
//		}
//		
//		// サービスマップの取得
//		while(dbMap != null)
//		{
//			// KEY：サービスコード
//			String svcCd = (dbMap.getString(JBSbatKK_M_SVC.SVC_CD));
//			// KEY2：サービスコード名称
//			String svcNm = (dbMap.getString(JBSbatKK_M_SVC.SVC_NM));
//			
//			scvNmMap.put(svcCd, svcNm);
//			
//			dbMap =  db_KK_M_SVC.selectNext();
//		}
//		
//		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSvcMap]");
//		return;
//	}
//IT1-2018-0000198 DEL END
	
	/**
	 * インセンティブ料金情報【明細部】【合計部】を作成します。
	 * @throws Exception
	 */
	private void makeOutput(JBSbatServiceInterfaceMap orosiJgsyaAllLine
							,JBSbatOutputItem outputItem) throws Exception
	{
		
		// 変数宣言
		// IT2-2018-0000037 ADD START
		// 新規申込件数(ネット)
		BigDecimal newMskmCntLine1 = BigDecimal.ZERO;
		// 新規申込料金(ネット)
		BigDecimal newMskmKeiPrcLine1 = BigDecimal.ZERO;
		// 新規申込件数(電話)
		BigDecimal newMskmCntLine2 = BigDecimal.ZERO;
		// 新規申込料金(電話)
		BigDecimal newMskmKeiPrcLine2 = BigDecimal.ZERO;
		// 新規申込件数(テレビ)
		BigDecimal newMskmCntLine3 = BigDecimal.ZERO;
		// 新規申込料金(テレビ)
		BigDecimal newMskmKeiPrcLine3 = BigDecimal.ZERO;
		// IT2-2018-0000037 ADD END

		// v39.00.00 ADD START
		// 継続利用契約数(ネット)
		BigDecimal keizokuUseKeiCntLine1 = BigDecimal.ZERO;
		// 継続利用契約料金(ネット)
		BigDecimal keizokuUseKeiPrcLine1 = BigDecimal.ZERO;
		// 月間契約獲得件数(ネット)
		BigDecimal monKektkcnCntLine1 = BigDecimal.ZERO;
		// 月間契約獲得件数料金(ネット)
		BigDecimal monKektkcnPrcLine1 = BigDecimal.ZERO;
		// 年間契約獲得件数(ネット)
		BigDecimal yearKeiKaktkCntLine1 = BigDecimal.ZERO;
		// 年間契約獲得件数料金(ネット)
		BigDecimal yearKeiKaktkPrcLine1 = BigDecimal.ZERO;
		// v39.00.00 ADD END
		
		// 新規申込件数(合計)
		BigDecimal newMskmCnt = BigDecimal.ZERO;
		// 新規申込料金(合計)
		BigDecimal newMskmPrc = BigDecimal.ZERO;
		// 債権譲渡金額
		BigDecimal amnt = BigDecimal.ZERO;
		// 債権譲渡手数料
		BigDecimal sknJotoComi = BigDecimal.ZERO;
		
		// 卸事業者コード,卸事業者名を取得する
		String orsjgsya = orosiJgsyaAllLine.getString(JBSbatACIFM305.ORSJGS_CD);
		String orsjgsyaNm = orosiJgsyaAllLine.getString(JBSbatACIFM305.ORSJGS_NM);
		
		// インセンティブ料金情報【明細部】の1レコード目
		JBSbatServiceInterfaceMap insentivePrcLine1 = new JBSbatServiceInterfaceMap();
		// インセンティブ料金情報【明細部】の2レコード目
		JBSbatServiceInterfaceMap insentivePrcLine2 = new JBSbatServiceInterfaceMap();
		// インセンティブ料金情報【明細部】の3レコード目
		JBSbatServiceInterfaceMap insentivePrcLine3 = new JBSbatServiceInterfaceMap();
		
		
		// 先に出力するレコードの共通部の設定を行う
		// サービスコードが「01：ネット」のレコード
		// 卸先事業者コード
		insentivePrcLine1.setString(JBSbatACIFM303.ORSJGS_CD,	 				orsjgsya);
		// 卸先事業者名
		insentivePrcLine1.setString(JBSbatACIFM303.ORSJGS_NM,					orsjgsyaNm);
		// サービス名
		// IT1-2018-0000198 MOD START
		//insentivePrcLine1.setString(JBSbatACIFM303.SVC_NM,						(String)scvNmMap.get(JKKStrConst.CD00130_01));
		insentivePrcLine1.setString(JBSbatACIFM303.SVC_NM,						JACBatOrsInsSvcInfoUtil.getSvcNm(JKKStrConst.CD00130_01));
		// IT1-2018-0000198 MOD END
		
		// サービスコードが「02：電話」のレコード
		// 卸先事業者コード
		insentivePrcLine2.setString(JBSbatACIFM303.ORSJGS_CD,	 				orsjgsya);
		// 卸先事業者名
		insentivePrcLine2.setString(JBSbatACIFM303.ORSJGS_NM,					orsjgsyaNm);
		// サービス名
		// IT1-2018-0000198 MOD START
		//insentivePrcLine2.setString(JBSbatACIFM303.SVC_NM,						(String)scvNmMap.get(JKKStrConst.CD00130_02));
		insentivePrcLine2.setString(JBSbatACIFM303.SVC_NM,						JACBatOrsInsSvcInfoUtil.getSvcNm(JKKStrConst.CD00130_02));
		// IT1-2018-0000198 MOD END
		
		// サービスコードが「03：テレビ」のレコード
		// 卸先事業者コード
		insentivePrcLine3.setString(JBSbatACIFM303.ORSJGS_CD,	 				orsjgsya);
		// 卸先事業者名
		insentivePrcLine3.setString(JBSbatACIFM303.ORSJGS_NM,					orsjgsyaNm);
		// サービス名
		// IT1-2018-0000198 MOD START
		//insentivePrcLine3.setString(JBSbatACIFM303.SVC_NM,						(String)scvNmMap.get(JKKStrConst.CD00130_03));
		insentivePrcLine3.setString(JBSbatACIFM303.SVC_NM,						JACBatOrsInsSvcInfoUtil.getSvcNm(JKKStrConst.CD00130_03));
		// IT1-2018-0000198 MOD END
		
		// キーの作成
		String outKey = null;
		
		for(JBSbatServiceInterfaceMap  insentiveNewMskmPrcLine : insentiveNewMskmPrcList)
		{
			
			if(insentiveNewMskmPrcLine != null)
			{
				// key：卸先事業者コード
				outKey = (String) insentiveNewMskmPrcLine.get(JBSbatACIFM300.ORSJGS_CD);
			}

			// 卸対象抽出.卸先事業者コード ＝ インセンティブ料金（新規申込料金）．卸先事業者コード
			if(outKey.equals(orsjgsya))
			{
				// 出力処理
				// インセンティブ料金情報ファイル【明細部】のマップに設定

				
				// インセンティブ料金情報【明細部】の1レコード目
				if(insentiveNewMskmPrcLine.get(JBSbatACIFM300.SVC_CD).equals("01"))
				{
					// 新規申込件数
					// IT2-2018-0000037 MOD START
//					insentivePrcLine1.setBigDecimal(JBSbatACIFM303.NEW_MSKM_CNT,				insentiveNewMskmPrcLine.get(JBSbatACIFM300.CHST_CNT));
					newMskmCntLine1 = insentiveNewMskmPrcLine.getBigDecimal(JBSbatACIFM300.CHST_CNT);
					// 新規申込料金
//					insentivePrcLine1.setBigDecimal(JBSbatACIFM303.NEW_MSKM_KEI_PRC,		insentiveNewMskmPrcLine.get(JBSbatACIFM300.NEW_MSKM_KEI_PRC));
					newMskmKeiPrcLine1 = insentiveNewMskmPrcLine.getBigDecimal(JBSbatACIFM300.NEW_MSKM_KEI_PRC);
					// IT2-2018-0000037 MOD END
				}
				
				// インセンティブ料金情報【明細部】の2レコード目
				else if(insentiveNewMskmPrcLine.get(JBSbatACIFM300.SVC_CD).equals("02"))
				{
					// 新規申込件数
					// IT2-2018-0000037 MOD START
//					insentivePrcLine2.setBigDecimal(JBSbatACIFM303.NEW_MSKM_CNT,				insentiveNewMskmPrcLine.get(JBSbatACIFM300.CHST_CNT));
					newMskmCntLine2 = insentiveNewMskmPrcLine.getBigDecimal(JBSbatACIFM300.CHST_CNT);

					// 新規申込料金
//					insentivePrcLine2.setBigDecimal(JBSbatACIFM303.NEW_MSKM_KEI_PRC,		insentiveNewMskmPrcLine.get(JBSbatACIFM300.NEW_MSKM_KEI_PRC));
					newMskmKeiPrcLine2 = insentiveNewMskmPrcLine.getBigDecimal(JBSbatACIFM300.NEW_MSKM_KEI_PRC);
					// IT2-2018-0000037 MOD END
				}
				
				// インセンティブ料金情報【明細部】の3レコード目
				else if(insentiveNewMskmPrcLine.get(JBSbatACIFM300.SVC_CD).equals("03"))
				{
					// 新規申込件数
					// IT2-2018-0000037 MOD START
//					insentivePrcLine3.setBigDecimal(JBSbatACIFM303.NEW_MSKM_CNT,				insentiveNewMskmPrcLine.get(JBSbatACIFM300.CHST_CNT));
					newMskmCntLine3 = insentiveNewMskmPrcLine.getBigDecimal(JBSbatACIFM300.CHST_CNT);
					
					// 新規申込料金
					// IT2-2018-0000037 MOD START
//					insentivePrcLine3.setBigDecimal(JBSbatACIFM303.NEW_MSKM_KEI_PRC,		insentiveNewMskmPrcLine.get(JBSbatACIFM300.NEW_MSKM_KEI_PRC));
					newMskmKeiPrcLine3 = insentiveNewMskmPrcLine.getBigDecimal(JBSbatACIFM300.NEW_MSKM_KEI_PRC);
					// IT2-2018-0000037 MOD END
				}
			}
		}
		
//		// IT2-2018-0000037 DEL START
//		if(insentivePrcLine1.get(JBSbatACIFM303.NEW_MSKM_CNT) == null && insentivePrcLine1.get(JBSbatACIFM303.NEW_MSKM_KEI_PRC) == null)
//		{
//			// 新規申込件数
//			insentivePrcLine1.setBigDecimal(JBSbatACIFM303.NEW_MSKM_CNT,				JACStrConst.EDIT_PTN_0);
//			// 新規申込料金
//			insentivePrcLine1.setBigDecimal(JBSbatACIFM303.NEW_MSKM_KEI_PRC,		JACStrConst.EDIT_PTN_0);
//		}
//		// IT2-2018-0000037 MOD START
//		if(insentivePrcLine2.get(JBSbatACIFM303.NEW_MSKM_CNT) == null && insentivePrcLine2.get(JBSbatACIFM303.NEW_MSKM_KEI_PRC) == null)
//		{
//			// 新規申込件数
//			insentivePrcLine2.setBigDecimal(JBSbatACIFM303.NEW_MSKM_CNT,				JACStrConst.EDIT_PTN_0);
//			// 新規申込料金
//			insentivePrcLine2.setBigDecimal(JBSbatACIFM303.NEW_MSKM_KEI_PRC,		JACStrConst.EDIT_PTN_0);
//		}
//		// IT2-2018-0000037 MOD START
//		if(insentivePrcLine3.get(JBSbatACIFM303.NEW_MSKM_CNT) == null && insentivePrcLine3.get(JBSbatACIFM303.NEW_MSKM_KEI_PRC) == null)
//		{
//			// 新規申込件数
//			insentivePrcLine3.setBigDecimal(JBSbatACIFM303.NEW_MSKM_CNT,				JACStrConst.EDIT_PTN_0);
//			// 新規申込料金
//			insentivePrcLine3.setBigDecimal(JBSbatACIFM303.NEW_MSKM_KEI_PRC,		JACStrConst.EDIT_PTN_0);
//		}
//		// IT2-2018-0000037 DEL END
				
		// v39.00.00 ADD START
		// キーの作成
		outKey = null;
		
		for(JBSbatServiceInterfaceMap  insentiveKeizokuUseKeiPrcLine : insentiveKeizokuUseKeiPrcList)
		{
			
			if(insentiveKeizokuUseKeiPrcLine != null)
			{
				// key：卸先事業者コード
				outKey = (String) insentiveKeizokuUseKeiPrcLine.get(JBSbatACIFM320.ORSJGS_CD);
			}

			// 卸対象抽出.卸先事業者コード ＝ インセンティブ料金（継続利用契約料金）．卸先事業者コード
			if(outKey.equals(orsjgsya))
			{
				// 出力処理
				// インセンティブ料金情報ファイル【明細部】のマップに設定

				
				// インセンティブ料金情報【明細部】の1レコード目
				if(insentiveKeizokuUseKeiPrcLine.get(JBSbatACIFM320.SVC_CD).equals("01"))
				{
					// 継続利用契約数
					keizokuUseKeiCntLine1 = insentiveKeizokuUseKeiPrcLine.getBigDecimal(JBSbatACIFM320.CHST_CNT);
					// 継続利用料金
					keizokuUseKeiPrcLine1 = insentiveKeizokuUseKeiPrcLine.getBigDecimal(JBSbatACIFM320.KEIZOKU_USE_KEI_PRC);
				}
			}
		}
		// キーの作成
		outKey = null;
		
		for(JBSbatServiceInterfaceMap  insentiveMonKektkcnPrcLine : insentiveMonKektkcnPrcList)
		{
			
			if(insentiveMonKektkcnPrcLine != null)
			{
				// key：卸先事業者コード
				outKey = (String) insentiveMonKektkcnPrcLine.get(JBSbatACIFM314.ORSJGS_CD);
			}

			// 卸対象抽出.卸先事業者コード ＝ インセンティブ料金（月間獲得数料金）．卸先事業者コード
			if(outKey.equals(orsjgsya))
			{
				// 出力処理
				// インセンティブ料金情報ファイル【明細部】のマップに設定

				
				// インセンティブ料金情報【明細部】の1レコード目
				if(insentiveMonKektkcnPrcLine.get(JBSbatACIFM314.SVC_CD).equals("01"))
				{
					// 継続利用契約数
					monKektkcnCntLine1 = insentiveMonKektkcnPrcLine.getBigDecimal(JBSbatACIFM314.CHST_CNT);
					// 継続利用料金
					monKektkcnPrcLine1 = insentiveMonKektkcnPrcLine.getBigDecimal(JBSbatACIFM314.MON_KEKTKCN_PRC);
				}
			}
		}
		// キーの作成
		outKey = null;
		
		for(JBSbatServiceInterfaceMap  insentiveYearKeiKaktkCntPrcLine : insentiveYearKeiKaktkCntPrcList)
		{
			
			if(insentiveYearKeiKaktkCntPrcLine != null)
			{
				// key：卸先事業者コード
				outKey = (String) insentiveYearKeiKaktkCntPrcLine.get(JBSbatACIFM314.ORSJGS_CD);
			}

			// 卸対象抽出.卸先事業者コード ＝ インセンティブ料金（年間獲得数料金）．卸先事業者コード
			if(outKey.equals(orsjgsya))
			{
				// 出力処理
				// インセンティブ料金情報ファイル【明細部】のマップに設定

				
				// インセンティブ料金情報【明細部】の1レコード目
				if(insentiveYearKeiKaktkCntPrcLine.get(JBSbatACIFM314.SVC_CD).equals("01"))
				{
					// 継続利用契約数
					yearKeiKaktkCntLine1 = insentiveYearKeiKaktkCntPrcLine.getBigDecimal(JBSbatACIFM318.CHST_CNT);
					// 継続利用料金
					yearKeiKaktkPrcLine1 = insentiveYearKeiKaktkCntPrcLine.getBigDecimal(JBSbatACIFM318.YEAR_KEI_KAKTK_CNT_PRC);
				}
			}
		}
		// v39.00.00 ADD END
		
		// IT2-2018-0000037 ADD START
		// 新規申込件数
		insentivePrcLine1.setString(JBSbatACIFM303.NEW_MSKM_CNT,				formatNumber(newMskmCntLine1.toString()));
		// 新規申込料金
		insentivePrcLine1.setString(JBSbatACIFM303.NEW_MSKM_KEI_PRC,			formatNumber(newMskmKeiPrcLine1.toString()));
		// IT2-2018-0000037 ADD END
		// 継続利用契約数
		// v39.00.00 MOD START
//		insentivePrcLine1.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_CNT,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine1.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_CNT,			formatNumber(keizokuUseKeiCntLine1.toString()));
		// 継続利用料金
//		insentivePrcLine1.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_PRC,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine1.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_PRC,			formatNumber(keizokuUseKeiPrcLine1.toString()));
		// 月間獲得件数
		insentivePrcLine1.setString(JBSbatACIFM303.MON_KEI_KAKTK_CNT,			formatNumber(monKektkcnCntLine1.toString()));
		// 月間獲得料金
		insentivePrcLine1.setString(JBSbatACIFM303.MON_KEI_KAKTK_CNT_PRC,		formatNumber(monKektkcnPrcLine1.toString()));
		// 年間獲得件数
//		insentivePrcLine1.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine1.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT,			formatNumber(yearKeiKaktkCntLine1.toString()));
		// 年間獲得料金
//		insentivePrcLine1.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT_PRC,		JACStrConst.EDIT_PTN_0);
		insentivePrcLine1.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT_PRC,		formatNumber(yearKeiKaktkPrcLine1.toString()));
		// v39.00.00 MOD END
		// 債権譲渡金額
		// v39.00.01 MOD START
		//insentivePrcLine1.setString(JBSbatACIFM303.SKN_JOTO_AMNT,				JACStrConst.KARA_MOJI);
		insentivePrcLine1.setString(JBSbatACIFM303.SKN_JOTO_AMNT,				JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// 債権譲渡手数料
		// v39.00.01 MOD START
		//insentivePrcLine1.setString(JBSbatACIFM303.SKN_JOTO_COMMISION,			JACStrConst.KARA_MOJI);
		insentivePrcLine1.setString(JBSbatACIFM303.SKN_JOTO_COMMISION,			JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		
		// IT2-2018-0000037 ADD START
		// 新規申込件数
		insentivePrcLine2.setString(JBSbatACIFM303.NEW_MSKM_CNT,				formatNumber(newMskmCntLine2.toString()));
		// 新規申込料金
		insentivePrcLine2.setString(JBSbatACIFM303.NEW_MSKM_KEI_PRC,			formatNumber(newMskmKeiPrcLine2.toString()));
		// IT2-2018-0000037 ADD END
		// 継続利用契約数
		// v39.00.01 MOD START
		//insentivePrcLine2.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_CNT,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine2.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_CNT,			JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// 継続利用料金
		// v39.00.01 MOD START
		//insentivePrcLine2.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_PRC,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine2.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_PRC,			JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// v39.00.00 ADD START
		// 月間獲得件数
		// v39.00.01 MOD START
		//insentivePrcLine2.setString(JBSbatACIFM303.MON_KEI_KAKTK_CNT,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine2.setString(JBSbatACIFM303.MON_KEI_KAKTK_CNT,			JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// 月間獲得料金
		// v39.00.01 MOD START
		//insentivePrcLine2.setString(JBSbatACIFM303.MON_KEI_KAKTK_CNT_PRC,		JACStrConst.EDIT_PTN_0);
		insentivePrcLine2.setString(JBSbatACIFM303.MON_KEI_KAKTK_CNT_PRC,		JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// v39.00.00 ADD END
		// 年間獲得件数
		// v39.00.01 MOD START
		//insentivePrcLine2.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine2.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT,			JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// 年間獲得料金
		// v39.00.01 MOD START
		//insentivePrcLine2.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT_PRC,		JACStrConst.EDIT_PTN_0);
		insentivePrcLine2.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT_PRC,		JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// 債権譲渡金額
		// v39.00.01 MOD START
		//insentivePrcLine2.setString(JBSbatACIFM303.SKN_JOTO_AMNT,				JACStrConst.KARA_MOJI);
		insentivePrcLine2.setString(JBSbatACIFM303.SKN_JOTO_AMNT,				JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// 債権譲渡手数料
		// v39.00.01 MOD START
		//insentivePrcLine2.setString(JBSbatACIFM303.SKN_JOTO_COMMISION,			JACStrConst.KARA_MOJI);
		insentivePrcLine2.setString(JBSbatACIFM303.SKN_JOTO_COMMISION,			JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		
		// IT2-2018-0000037 ADD START
		// 新規申込件数
		insentivePrcLine3.setString(JBSbatACIFM303.NEW_MSKM_CNT,				formatNumber(newMskmCntLine3.toString()));
		// 新規申込料金
		insentivePrcLine3.setString(JBSbatACIFM303.NEW_MSKM_KEI_PRC,			formatNumber(newMskmKeiPrcLine3.toString()));
		// IT2-2018-0000037 ADD END
		// 継続利用契約数
		// v39.00.01 MOD START
		//insentivePrcLine3.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_CNT,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine3.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_CNT,			JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// 継続利用料金
		// v39.00.01 MOD START
		//insentivePrcLine3.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_PRC,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine3.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_PRC,			JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// v39.00.00 ADD START
		// 月間獲得件数
		// v39.00.01 MOD START
		//insentivePrcLine3.setString(JBSbatACIFM303.MON_KEI_KAKTK_CNT,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine3.setString(JBSbatACIFM303.MON_KEI_KAKTK_CNT,			JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// 月間獲得料金
		// v39.00.01 MOD START
		//insentivePrcLine3.setString(JBSbatACIFM303.MON_KEI_KAKTK_CNT_PRC,		JACStrConst.EDIT_PTN_0);
		insentivePrcLine3.setString(JBSbatACIFM303.MON_KEI_KAKTK_CNT_PRC,		JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// v39.00.00 ADD END
		// 年間獲得件数
		// v39.00.01 MOD START
		//insentivePrcLine3.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine3.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT,			JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// 年間獲得料金
		// v39.00.01 MOD START
		//insentivePrcLine3.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT_PRC,		JACStrConst.EDIT_PTN_0);
		insentivePrcLine3.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT_PRC,		JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// 債権譲渡金額
		// v39.00.01 MOD START
		//insentivePrcLine3.setString(JBSbatACIFM303.SKN_JOTO_AMNT,				JACStrConst.KARA_MOJI);
		insentivePrcLine3.setString(JBSbatACIFM303.SKN_JOTO_AMNT,				JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		// 債権譲渡手数料
		// v39.00.01 MOD START
		//insentivePrcLine3.setString(JBSbatACIFM303.SKN_JOTO_COMMISION,			JACStrConst.KARA_MOJI);
		insentivePrcLine3.setString(JBSbatACIFM303.SKN_JOTO_COMMISION,			JACStrConst.HYPHEN);
		// v39.00.01 MOD END
		
		
		// 【明細部】の新規申込件数、新規申込料金を足しあわせる
		// 新規申込件数（合計）＝　ネット．新規申込件数＋電話．新規申込件数＋テレビ．新規申込件数
		// IT2-2018-0000037 MOD START
//		newMskmCnt = (insentivePrcLine1.getBigDecimal(JBSbatACIFM303.NEW_MSKM_CNT)).add((BigDecimal)insentivePrcLine2.getBigDecimal(JBSbatACIFM303.NEW_MSKM_CNT).add((BigDecimal)insentivePrcLine3.getBigDecimal(JBSbatACIFM303.NEW_MSKM_CNT)));
		newMskmCnt = newMskmCntLine1.add(newMskmCntLine2).add(newMskmCntLine3);
		// 新規申込料金（合計）＝　ネット．新規申込料金＋電話．新規申込料金＋テレビ．新規申込料金
//		newMskmPrc = (insentivePrcLine1.getBigDecimal(JBSbatACIFM303.NEW_MSKM_KEI_PRC)).add(insentivePrcLine2.getBigDecimal(JBSbatACIFM303.NEW_MSKM_KEI_PRC).add(insentivePrcLine3.getBigDecimal(JBSbatACIFM303.NEW_MSKM_KEI_PRC)));
		newMskmPrc = newMskmKeiPrcLine1.add(newMskmKeiPrcLine2).add(newMskmKeiPrcLine3);
		// IT2-2018-0000037 MOD END
		// インセンティブ料金計算（債権譲渡）
		for (JBSbatServiceInterfaceMap insentiveSaikenJotoPrcLine : insentiveSaikenJotoPrcList)
		{
			if(orsjgsya.equals(insentiveSaikenJotoPrcLine.get(JBSbatACIFM302.ORSJGS_CD)))
			{
				// 卸事業者コードが一致する債権譲渡金額と債権譲渡手数料を取得する
				amnt = insentiveSaikenJotoPrcLine.getBigDecimal(JBSbatACIFM302.AMNT);
				sknJotoComi = insentiveSaikenJotoPrcLine.getBigDecimal(JBSbatACIFM302.SKN_JOTO_COMMISION);
				
				break;
			}
		}
		
		// インセンティブ料金情報【合計部】のレコード
		JBSbatServiceInterfaceMap insentivePrcLine4 = new JBSbatServiceInterfaceMap();
		// 卸先事業者コード
		insentivePrcLine4.setString(JBSbatACIFM303.ORSJGS_CD,	 				orsjgsya);
		// 卸先事業者名
		insentivePrcLine4.setString(JBSbatACIFM303.ORSJGS_NM,					orsjgsyaNm);
		// サービス名
		insentivePrcLine4.setString(JBSbatACIFM303.SVC_NM,						JACStrConst.FILE_KMK_GOUKEI);
		// IT2-2018-0000037 MOD START
		// 新規申込件数
//		insentivePrcLine4.setBigDecimal(JBSbatACIFM303.NEW_MSKM_CNT,			newMskmCnt);
		insentivePrcLine4.setString(JBSbatACIFM303.NEW_MSKM_CNT,				formatNumber(newMskmCnt.toString()));
		// 新規申込料金
//		insentivePrcLine4.setBigDecimal(JBSbatACIFM303.NEW_MSKM_KEI_PRC,		newMskmPrc);
		insentivePrcLine4.setString(JBSbatACIFM303.NEW_MSKM_KEI_PRC,			formatNumber(newMskmPrc.toString()));
		// IT2-2018-0000037 MOD END
		// v39.00.00 MOD START
		// 継続利用契約数
//		insentivePrcLine4.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_CNT,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine4.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_CNT,			formatNumber(keizokuUseKeiCntLine1.toString()));
		// 継続利用料金
//		insentivePrcLine4.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_PRC,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine4.setString(JBSbatACIFM303.KEIZOKU_USE_KEI_PRC,			formatNumber(keizokuUseKeiPrcLine1.toString()));
		// 月間獲得件数
		insentivePrcLine4.setString(JBSbatACIFM303.MON_KEI_KAKTK_CNT,			formatNumber(monKektkcnCntLine1.toString()));
		// 月間獲得料金
		insentivePrcLine4.setString(JBSbatACIFM303.MON_KEI_KAKTK_CNT_PRC,		formatNumber(monKektkcnPrcLine1.toString()));
		// 年間獲得件数
//		insentivePrcLine4.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT,			JACStrConst.EDIT_PTN_0);
		insentivePrcLine4.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT,			formatNumber(yearKeiKaktkCntLine1.toString()));
		// 年間獲得料金
//		insentivePrcLine4.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT_PRC,		JACStrConst.EDIT_PTN_0);
		insentivePrcLine4.setString(JBSbatACIFM303.YEAR_KEI_KAKTK_CNT_PRC,		formatNumber(yearKeiKaktkPrcLine1.toString()));
		// v39.00.00 MOD END
		
		if( amnt == null && sknJotoComi == null)
		{	
			// 債権譲渡金額、債権譲渡手数料がない場合、「0」を設定
			// IT2-2018-0000037 MOD START
			// 債権譲渡金額
//			 insentivePrcLine4.setBigDecimal(JBSbatACIFM303.SKN_JOTO_AMNT,			JACStrConst.EDIT_PTN_0);
			 insentivePrcLine4.setString(JBSbatACIFM303.SKN_JOTO_AMNT,			JACStrConst.EDIT_PTN_0);
			// 債権譲渡手数料
//			 insentivePrcLine4.setBigDecimal(JBSbatACIFM303.SKN_JOTO_COMMISION,		JACStrConst.EDIT_PTN_0);
			 insentivePrcLine4.setString(JBSbatACIFM303.SKN_JOTO_COMMISION,		JACStrConst.EDIT_PTN_0);
			// IT2-2018-0000037 MOD END
		}
		// IT2-2018-0000037 MOD START
		// 債権譲渡金額
//		 insentivePrcLine4.setBigDecimal(JBSbatACIFM303.SKN_JOTO_AMNT,			amnt);
		 insentivePrcLine4.setString(JBSbatACIFM303.SKN_JOTO_AMNT,				formatNumber(amnt.toString()));
		// 債権譲渡手数料
//		 insentivePrcLine4.setBigDecimal(JBSbatACIFM303.SKN_JOTO_COMMISION,		sknJotoComi);
		 insentivePrcLine4.setString(JBSbatACIFM303.SKN_JOTO_COMMISION,			formatNumber(sknJotoComi.toString()));
		// IT2-2018-0000037 MOD END

		// ファイル出力処理
		
		outputItem.addOutMapList(insentivePrcLine1);
		outputItem.addOutMapList(insentivePrcLine2);
		outputItem.addOutMapList(insentivePrcLine3);
		outputItem.addOutMapList(insentivePrcLine4);
			
		// 新規申込件数(合計)、新規申込料金(合計)をクリアする
		newMskmCnt = BigDecimal.ZERO;
		newMskmPrc = BigDecimal.ZERO;
				
		return;
	}
	
	
	private void outFile(JBSbatOutputItem outputItem) throws Exception
	{
		// 出力ファイルオブジェクトの生成
		JBSbatOutputFileUtil insentivePrcFile = new JBSbatOutputFileUtil(outputFilePath1);
		// 改行コードの設定
		insentivePrcFile.setLine(JACStrConst.LINE_CRLF);
		// 文字コードの設定
		insentivePrcFile.setEncode(JACStrConst.ENCODE_SJIS);
		
		insentivePrcFile.createWriter();
		
		// 出力定義ファイルオブジェクトの生成
		String insentivePrcDefNm = JBSbatAplConst.getAplConstValue(PARAM_OTD) + outputDef1;
		JBSbatDefFileUtil insentivePrcDef = new JBSbatDefFileUtil(insentivePrcDefNm, insentivePrcFile);
		
		ArrayList<?> outMapList = (ArrayList<?>)outputItem.getOutMapList();
		
		for(int i = 0 ; i < outMapList.size() ; i++)
		{
			// リストの件数分
			JBSbatServiceInterfaceMap insentivePrcLine = new JBSbatServiceInterfaceMap();
			
			insentivePrcLine = (JBSbatServiceInterfaceMap)outMapList.get(i);
			
			insentivePrcFile.print(insentivePrcLine, insentivePrcDef);
		}
	}
	
	// IT2-2018-0000037 ADD START
	/**
	 * オブジェクトに値が設定されているか判定します。
	 * <br>
	 * @param arg0 判定するオブジェクト
	 * @return オブジェクトに値が設定されていない場合はtrue
	 */
	private boolean isNull(Object arg0) 
	{
		if (arg0 == null) 
		{
			return true;
		}

		return 0 == arg0.toString().length();
	}
	
	/**
	 * 文字列の形式に従い、数字列の書式を取得します。
	 * <br>
	 * @param arg0 数値書式編集する文字列
	 * @return String 数値書式編集された文字列
	 */
	private static String getNumberPattern(String arg0) 
	{
		int idx = arg0.indexOf(".");

		if (0 > idx) 
		{
			return ",###";
		}

		StringBuffer ret = new StringBuffer();

		ret.append(",###");

		ret.append(".");

		String str = arg0.substring(idx + 1);

		for (int i = 0; i < str.length(); i++) 
		{
			ret.append("#");
		}

		return ret.toString();
	}
	
	/**
	 * 数値書式(カンマ区切り)の編集を行います。
	 * <br>
	 * @param arg0 カンマ区切りに編集する文字列
	 * @return String 数値書式(カンマ区切り)に編集された文字列
	 */
	private String formatNumber(String arg0) 
	{
		if(isNull(arg0)) 
		{
			return arg0;
		}

		try 
		{
			String pattern = getNumberPattern(arg0);

			DecimalFormat instance = new DecimalFormat(pattern);

			return instance.format(new Double(arg0));
		}
		catch (NumberFormatException nfe) 
		{
			return arg0;
		}
	}
	// IT2-2018-0000037 ADD END

}
