#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：コンビニリアル入金速報マージ
#
# 機能          ：コンビニリアル入金速報文字コード変換データ(複数件あり)をマージし、コンビニリアル入金速報データを作成する。
#
# コマンド形式  ：EO60L0105K0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v3.00           2012/07/06  FJ）後藤     【IT2-2012-0001200】ファイルバックアップ対応
# v4.00           2012/12/29  FJ）後藤     【ANK-1311-00-00】繰り返しバッチ方式変更
# v5.00           2013/08/08  FJ）庄司     【IT1-2013-0001576】flgファイルチェック処理追加対応
# v5.01           2013/08/21  FJ）狭間     【OM-2013-0000365】 重複ファイルチェック処理追加
# v5.02           2013/08/23  伊藤         【OM-2013-0000365】 バックアップファイル名をシステム日時の年月日時分秒に変更
# v5.03           2013/11/14  FJ) 菅原     【OM-2013-0002671】 連携ファイル名が重複する場合の対応
# v6.00           2013/12/04  FJ) 早崎     【OM-2013-0004521】 入金情報が連続で受信できなかった場合対応
# v6.01           2013/12/10  FJ) 後藤     【OM-2013-0004521】 警告出力処理を他ジョブに移管
##############################################################

##############################################################
# 環境変数定義
##############################################################

#
#---ツール格納場所
#
G_TOOLSH=.

#
#---環境変数定義Shell呼び出し
#
. EOK010110J0.sh

#
#---ＪＯＢ名
#
JOBNAME=`basename $0 | sed -e "s/\.sh//g"`

#
#---サービス（業務プロセス）
#
SVC=$JOBNAME

#
#---OPD
#
OPD=$1
#---運用日付取得
if [ "${OPD}" = "" ]; then
   . EOK010310J0.sh "NDATE"
else
   RSLT_OPEDATE="${OPD}"
fi
OPEDATE=${RSLT_OPEDATE}

#--システム年月日時分秒取得
. EOK010410J0.sh "2"

#
#---業務で必要な変数定義
#
#---手修正あり
#分割バイト数
byte=120
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

#
#---パラメタ定義
#

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=EO60L0105K0,"
P4="IND1=,"
P5="INF1=,"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=,"
P9="OTF1=,"
P10="OTD2=,"
P11="OTF2=,"
P12="TABLENAME=,"
P13="SQLKEY=,"
P14="SQLPARAM=,"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
P18="FREE="
PARA="$P1$P2$P3$P4$P5$P6$P7$P8$P9$P10$P11$P12$P13$P14$P15$P16$P17$P18"

sh ${G_TOOLSH}/EOK010210J0.sh CS00027I $JOBNAME

#
#---ファイルのクリア
#
cat /dev/null > ${MID_DIR_CH}/CHIFE019001.csv
cat /dev/null > ${MID_DIR_CH}/CHIFE019001_TMP_${JOBNAME}.csv

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " CAT Error($SVC cat:rc=$rc) "
    echo $JOBNAME " CAT Error($SVC cat:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

if [ 0 -ne `ls ${GAIBU_RECEIVE_DIR_CH}/CHIFE019/KOP* 2> /dev/null | wc -l` ]
then
    # flgファイルの拡張子定義
    FLGFILEEXT=flg

    # コンビニリアル入金連携なしファイル削除
    rm -f ${MID_DIR_CH}/CHIFM221001_*

    rc=$?
    if [ $rc -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Remove File Error($SVC sort:rc=$rc) "
        echo $JOBNAME " Remove File Error($SVC sort:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi
    
    for FILE in `ls -1 ${GAIBU_RECEIVE_DIR_CH}/CHIFE019/KOP*`
    do 
        # 初期値設定
        endNo=1
        tempNo=1
        #ファイル名称の取得
        fileName=`basename ${FILE}`
        #ファイル名称からタイムスタンプをカット
        fileName_tc=`basename ${FILE} | cut -b 1-15`
        #拡張子の判定
        fileName_fg=`basename ${FILE} | cut -b 31-33`
        #対象ファイルがデータファイルの場合は拡張子が存在しないのでnull判定
        if [ "$fileName_fg" = "" ]
        then
            fileName_fg="000"
        fi

        #処理対象ファイルがflgファイルの場合、なにも処理しない
        if [ $FLGFILEEXT !=  $fileName_fg ]
        then
            #処理対象ファイルのflgファイルが存在すればマージ処理を行う
            if [ -f ${FILE}.${FLGFILEEXT} ]
            then
                #処理対象ファイル同名のバックアップファイルが存在しなければマージ処理を行う
                chkFileName="${GAIBU_RECEIVE_DIR_CH}/CHIFE019/bk/${fileName_tc}*"
                if [  0 -eq `ls ${chkFileName} 2> /dev/null | wc -l` ]
                then
                    # 文字列バイト数の取得
                    inFileByteCnt=`cat ${FILE} | wc -c`
                    while [ ${endNo} -le $inFileByteCnt ]
                    do
                       tempNo=`expr ${endNo} + ${byte} - 1`
                       echo "${fileName_tc},`cut -b ${endNo}-${tempNo} ${FILE}`" >> ${MID_DIR_CH}/CHIFE019001_TMP_${JOBNAME}.csv
                       endNo=`expr ${endNo} + ${byte}`
                    done

                    # 処理対象ファイル(receiveディレクトリに存在したファイル)は履歴として常にバックアップする)
                    mv -f ${FILE}.${FLGFILEEXT}   ${GAIBU_RECEIVE_DIR_CH}/CHIFE019/bk/${fileName}.${FLGFILEEXT}_${RSLT_SYSDATE}
                    mv -f ${FILE}                 ${GAIBU_RECEIVE_DIR_CH}/CHIFE019/bk/${fileName}_${RSLT_SYSDATE}
                    rc=$?
                    if [ $rc -ne 0 ]
                    then
                        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " MV Error2($SVC mv:rc=$rc) "
                        echo $JOBNAME " MV Error2($SVC mv:rc=$rc) "
                        exit ${G_RTN_ERROR}
                    fi
                    
                else

                    # ファイル重複分は取り込まない
                    mv -f ${FILE}.${FLGFILEEXT}   ${GAIBU_RECEIVE_DIR_CH}/CHIFE019/bk/${fileName}.${FLGFILEEXT}_${RSLT_SYSDATE}_SK
                    mv -f ${FILE}                 ${GAIBU_RECEIVE_DIR_CH}/CHIFE019/bk/${fileName}_${RSLT_SYSDATE}_SK
                    rc=$?
                    if [ $rc -ne 0 ]
                    then
                        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " MV Error1($SVC mv:rc=$rc) "
                        echo $JOBNAME " MV Error1($SVC mv:rc=$rc) "
                        exit ${G_RTN_ERROR}
                    fi

                fi

            fi
        fi
    done
else
    rm -f ${MID_DIR_CH}/CHIFE019001_TMP_${JOBNAME}.csv

    # コンビニリアル入金連携なしファイルを出力
    cat /dev/null >  ${MID_DIR_CH}/CHIFM221001_${RSLT_SYSDATE}.csv

    rc=$?
    if [ $rc -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " CAT Error($SVC cat:rc=$rc) "
        echo $JOBNAME " CAT Error($SVC cat:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi

#
#--- ジョブの終了メッセージを出力する
#
    sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
    sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME
    exit ${G_RTN_NORMAL}
fi

# 改行コード変換
nkf -Lw ${MID_DIR_CH}/CHIFE019001_TMP_${JOBNAME}.csv > ${MID_DIR_CH}/CHIFE019001.csv
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " NKF Error($SVC nkf:rc=$rc) "
    echo $JOBNAME " NKF Error($SVC nkf:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# 中間ファイル削除
if [ -f ${MID_DIR_CH}/CHIFE019001_TMP_${JOBNAME}.csv ]; then
	rm ${MID_DIR_CH}/CHIFE019001_TMP_${JOBNAME}.csv
fi
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Remove File Error($SVC sort:rc=$rc) "
    echo $JOBNAME " Remove File Error($SVC sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#--- ジョブの終了メッセージを出力する
#
sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME

exit ${G_RTN_NORMAL}
