/********************************************************************* * All Rights reserved,Copyright (c) K-Opticom * ********************************************************************** *<プログラム内容> * システム名 :eo顧客基幹システム * モジュール名 :JBSbatCHSeikyusPulloutChsht * ソースファイル名 :JBSbatCHSeikyusPulloutChsht.java * 作成者 :富士通  * 作成日 :2011年05月25日 *<機能概要> * 請求書引抜き対象抽出部品です。 *<修正履歴> * バージョン 修正日 修正者 修正内容 * v1.00.00 2011/05/25 富士通 新規作成 * v4.00.00 2012/12/04 FJ)加島 【IT1-2012-0002261】請求書引抜き対象抽出条件に、郵便自動振込を追加 * v4.00.01 2013/01/22 FJ) 早崎 【内部管理番号-0000171】当月請求なし+前月領収ありの引抜送信が行われない * v4.00.02 2013/01/22 FJ) 早崎 【内部管理番号-0000173】請求書引抜・当月請求書発行対象外でも引抜データを連携してしまう * v4.00.03 2013/04/14 FJ) 小柴 【内部管理番号-0000703】引抜対象の取得方法の変更・出力時の出力対象判定処理を追加 * v5.00.00 2013/09/16 FJ) 後藤 【OM-2013-0002077】請求抽出条件追加 * v5.00.01 2013/10/31 FJ) 早崎 【OM-2013-0003314,3420】対応 *********************************************************************/ package eo.business.service; import eo.business.common.JACbatDebugLogUtil; import eo.business.common.JBSbatBusinessService; import eo.business.util.file.JBSbatCHIFM220; import eo.business.util.table.JBSbatCH_T_SEIKY; import eo.business.util.table.JBSbatCH_T_SKS_HIKINUKI; import eo.common.constant.JACStrConst; import eo.framework.item.JBSbatCommonItem; import eo.framework.item.JBSbatOutputItem; import eo.framework.item.JBSbatServiceInterfaceMap; /** * 請求書引抜きデータ抽出

*
* @author 富士通 */ public class JBSbatCHSeikyusPulloutChsht extends JBSbatBusinessService { /**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/ /**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/ /** 前月.請求方法コード */ private static final String ZEN_SEIKY_WAY_CD = "ZEN_SEIKY_WAY_CD"; /** 前月.請求年月 */ private static final String ZEN_SEIKY_YM = "ZEN_SEIKY_YM"; /** 前月.請求番号 */ private static final String ZEN_SEIKY_NO = "ZEN_SEIKY_NO"; /** 前月.領収額出力有無 */ private static final String ZEN_RECEIPT_AMNT_OUTPUT_UM = "ZEN_RECEIPT_AMNT_OUTPUT_UM"; /** 当月.送信区分 */ private String sendKbn = JACStrConst.KARA_MOJI; /** 前月.送信区分 */ private String zenSendKbn = JACStrConst.KARA_MOJI; /** 送信区分 */ private String sendKbnCount = JACStrConst.KARA_MOJI; /** * 初期処理 * @param JBSbatCommonItem commonItem バッチ共通パラメータ電文 * @throws Exception */ public void initial(JBSbatCommonItem commonItem) throws Exception { /**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/ /**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/ // 共通パラメータを設定します super.setCommonInfo(commonItem); /**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/ assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]"); assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial][opeDate=" + super.opeDate + "]"); assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial][freeItem=" + super.freeItem + "]"); // フリー項目を分割する String[] freeItem = super.freeItem.split(JACStrConst.FREE_DIV); this.sendKbnCount = freeItem[0]; assert this.sendKbnCount != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][sendKbnCount = " + this.sendKbnCount + "]") : true; assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]"); /**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/ } /** * 主処理 * * @param inMap 入力電文 * @return JBSbatOutputItem 出力情報 * @throws Exception */ public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception { /**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/ assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]"); // 出力値判定処理 outPutValueJudge(inMap); // 請求書引抜き情報作成 JBSbatOutputItem outputBean = makeOutputBean(inMap); assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]"); return outputBean; /**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/ } /** * 出力項目「送信区分」の値を設定する * * @param inMap 入力電文 * @return outputBean 出力共通電文。 * @throws Exception 業務サービス内で発生した例外全般。 */ private void outPutValueJudge(JBSbatServiceInterfaceMap inMap) throws Exception { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outPutValueJudge]"); // 請求番号 String seikyNo = inMap.getString(JBSbatCH_T_SEIKY.SEIKY_NO); // 請求方法コード String seikyWayCd = inMap.getString(JBSbatCH_T_SEIKY.SEIKY_WAY_CD); // 請求書発行対象フラグ String seikysHakkoTgFlg = inMap.getString(JBSbatCH_T_SEIKY.SEIKYUS_HAKKO_TG_FLG); // 前月.請求番号 String zenSeikyNo = inMap.getString(ZEN_SEIKY_NO); // 前月.請求方法コード String zenSeikyWayCd = inMap.getString(ZEN_SEIKY_WAY_CD); // 前月.領収額出力有無 String zenReceipAmntOutPutUm = inMap.getString(ZEN_RECEIPT_AMNT_OUTPUT_UM); // 当月請求あり if(!JACStrConst.KARA_MOJI.equals(seikyNo) && null != seikyNo) { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][当月請求あり]"); // 請求書発行あり if(JACStrConst.SKS_HAK_TG_FLG_TG.equals(seikysHakkoTgFlg)) { // 口座振替または郵便振替 if(JACStrConst.SEIKY_KHRI.equals(seikyWayCd) || JACStrConst.SEIKY_YUFUIRI.equals(seikyWayCd)) { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][口座振替]"); // 当月.送信区分 ← 送信済み this.sendKbn = this.sendKbnCount; // 前月月.送信区分 ← "9"(未送信) this.zenSendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; } // 上記以外 else { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][口座振替以外]"); // 前月請求あり if(!JACStrConst.KARA_MOJI.equals(zenSeikyNo) && null != zenSeikyNo) { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][前月請求あり]"); // 口座振替または郵便振替 if(JACStrConst.SEIKY_KHRI.equals(zenSeikyWayCd) || JACStrConst.SEIKY_YUFUIRI.equals(zenSeikyWayCd)) { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][口座振替]"); // 領収額出力あり if(JACStrConst.RECEIPT_AMNT_OUTPUT_UM_ARI.equals(zenReceipAmntOutPutUm)) { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][領収額出力あり]"); // 当月.送信区分 ← 送信済み this.sendKbn = this.sendKbnCount; // 前月月.送信区分 ← 送信済み this.zenSendKbn = this.sendKbnCount; } // 領収額出力なし else { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][領収額出力なし]"); // 当月.送信区分 ← 送信済み this.sendKbn = this.sendKbnCount; // 前月月.送信区分 ← "9"(未送信) this.zenSendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; } } // 上記以外 else { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][口座振替以外]"); // 当月.送信区分 ← 送信済み this.sendKbn = this.sendKbnCount; // 前月月.送信区分 ← "9"(未送信) this.zenSendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; } } // 前月請求なし else { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][前月請求なし]"); // 当月.送信区分 ← 送信済み this.sendKbn = this.sendKbnCount; // 前月月.送信区分 ← "9"(未送信) this.zenSendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; } } } // 請求書発行なし else { // 前月請求あり if(!JACStrConst.KARA_MOJI.equals(zenSeikyNo) && null != zenSeikyNo) { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][前月請求あり]"); // 口座振替または郵便振替 if(JACStrConst.SEIKY_KHRI.equals(zenSeikyWayCd) || JACStrConst.SEIKY_YUFUIRI.equals(zenSeikyWayCd)) { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][口座振替]"); // 領収額出力あり if(JACStrConst.RECEIPT_AMNT_OUTPUT_UM_ARI.equals(zenReceipAmntOutPutUm)) { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][領収額出力あり]"); // 当月.送信区分 ← "9"(未送信) this.sendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; // 前月月.送信区分 ← 送信済み this.zenSendKbn = this.sendKbnCount; } // 領収額出力なし else { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][領収額出力なし]"); // 当月.送信区分 ← "9"(未送信) this.sendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; // 前月.送信区分 ← "9"(未送信) this.zenSendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; } } // 上記以外 else { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][口座振替以外]"); // 当月.送信区分 ← "9"(未送信) this.sendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; // 前月.送信区分 ← "9"(未送信) this.zenSendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; } } // 前月請求なし else { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][前月請求なし]"); // 当月.送信区分 ← "9"(未送信) this.sendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; // 前月.送信区分 ← "9"(未送信) this.zenSendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; } } } // 当月請求なし else { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][当月請求なし]"); // 前月請求あり if(!JACStrConst.KARA_MOJI.equals(zenSeikyNo) && null != zenSeikyNo) { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][前月請求あり]"); // 口座振替または郵便振替 if(JACStrConst.SEIKY_KHRI.equals(zenSeikyWayCd) || JACStrConst.SEIKY_YUFUIRI.equals(zenSeikyWayCd)) { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][口座振替]"); // 領収額出力あり if(JACStrConst.RECEIPT_AMNT_OUTPUT_UM_ARI.equals(zenReceipAmntOutPutUm)) { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][領収額出力あり]"); // 当月.送信区分 ← "9"(未送信) this.sendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; // 前月.送信区分 ← 送信済み this.zenSendKbn = this.sendKbnCount; } // 領収額出力なし else { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][領収額出力なし]"); // 当月.送信区分 ← "9"(未送信) this.sendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; // 前月.送信区分 ← "9"(未送信) this.zenSendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; } } // 上記以外 else { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][口座振替以外]"); // 当月.送信区分 ← "9"(未送信) this.sendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; // 前月.送信区分 ← "9"(未送信) this.zenSendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; } } // 前月請求なし else { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][前月請求なし]"); // 当月.送信区分 ← "9"(未送信) this.sendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; // 前月.送信区分 ← "9"(未送信) this.zenSendKbn = JACStrConst.PULLOUT_SEND_CD_MI_SEND; } } assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][前月.送信区分=" + this.zenSendKbn + "]"); assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outPutValueJudge][当月.送信区分=" + this.sendKbn + "]"); assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outPutValueJudge]"); } /** * 入力電文(請求書引抜き情報)を設定した出力共通電文を返します。 * * p * @param inMap 入力電文 * @return outputBean 出力共通電文。 * @throws Exception 業務サービス内で発生した例外全般。 */ private JBSbatOutputItem makeOutputBean(JBSbatServiceInterfaceMap inMap) throws Exception { assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputBean]"); JBSbatOutputItem outputBean = new JBSbatOutputItem(); // 請求書引抜き番号 String sksHikinukiNo = inMap.getString(JBSbatCH_T_SKS_HIKINUKI.SKS_HIKINUKI_NO); // 請求契約番号 String seikyKeiNo = inMap.getString(JBSbatCH_T_SKS_HIKINUKI.SEIKY_KEI_NO); // 当月分の請求書引抜き情報を出力する JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap(); // 請求書引抜き番号 outmap.setString(JBSbatCHIFM220.SKS_HIKINUKI_NO, sksHikinukiNo); // 請求契約番号 outmap.setString(JBSbatCHIFM220.SEIKY_KEI_NO, seikyKeiNo); // 請求年月 outmap.setString(JBSbatCHIFM220.SEIKY_YM, inMap.getString(JBSbatCH_T_SEIKY.SEIKY_YM)); // 請求番号 outmap.setString(JBSbatCHIFM220.SEIKY_NO, inMap.getString(JBSbatCH_T_SEIKY.SEIKY_NO)); // 請求方法コード outmap.setString(JBSbatCHIFM220.SEIKY_WAY_CD, inMap.getString(JBSbatCH_T_SEIKY.SEIKY_WAY_CD)); // 送信区分 outmap.setString(JBSbatCHIFM220.SEND_KBN, this.sendKbn); // 出力フラグ設定 outmap.setOutFlg(true); // 出力共通電文に設定 outputBean.addOutMapList(outmap); // 全月分の請求書引抜き情報を出力する JBSbatServiceInterfaceMap zenOutmap = new JBSbatServiceInterfaceMap(); // 請求書引抜き番号 zenOutmap.setString(JBSbatCHIFM220.SKS_HIKINUKI_NO, sksHikinukiNo); // 請求契約番号 zenOutmap.setString(JBSbatCHIFM220.SEIKY_KEI_NO, seikyKeiNo); // 請求年月 zenOutmap.setString(JBSbatCHIFM220.SEIKY_YM, inMap.getString(ZEN_SEIKY_YM)); // 請求番号 zenOutmap.setString(JBSbatCHIFM220.SEIKY_NO, inMap.getString(ZEN_SEIKY_NO)); // 請求方法コード zenOutmap.setString(JBSbatCHIFM220.SEIKY_WAY_CD, inMap.getString(ZEN_SEIKY_WAY_CD)); // 送信区分 zenOutmap.setString(JBSbatCHIFM220.SEND_KBN, this.zenSendKbn); // 出力フラグ設定 zenOutmap.setOutFlg(true); // 出力共通電文に設定 outputBean.addOutMapList(zenOutmap); assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputBean]"); return outputBean; } /** * 業務サービス終了処理 * @throws Exception */ public void terminal() throws Exception { /**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/ assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]"); /**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/ /**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/ assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]"); /**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/ } /**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/ /**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/ }