#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：コンビニリアル入金速報マージ（さくらＫＣＳ）
#
# 機能          ：コンビニリアル入金速報文字コード変換データ(複数件あり)をマージし、コンビニリアル入金速報データを作成する。
#
# コマンド形式  ：EO60L0330J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日            変更者               障害／仕様変更No.
# v52.00         2020/10/02        GDC)ジョバニー        【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入 EO60L0105K0.shから流用新規
# v60.00         2022/08/23         FJ)原田              【OM-2022-0000980】コンビニ入金の取込処理
##############################################################

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

#
#---ツール格納場所
#
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=EO60L0330J0,"
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"

# OM-2022-0000980 ADD START
#---リターンコード用変数
exit_rc=0
# OM-2022-0000980 ADD END

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

#
#---ファイルのクリア
#
cat /dev/null > ${MID_DIR_CH}/CHIFE081001.csv
cat /dev/null > ${MID_DIR_CH}/CHIFE081001_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}/CHIFE081/KOP* 2> /dev/null | wc -l` ]
then
    # flgファイルの拡張子定義
    FLGFILEEXT=flg

# さくらＫＣＳは連携なしＭＮを鳴らさない
#    # コンビニリアル入金連携なしファイル削除
#    rm -f ${MID_DIR_CH}/CHIFM221002_*
#
#    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}/CHIFE081/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}/CHIFE081/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}/CHIFE081001_TMP_${JOBNAME}.csv
                       endNo=`expr ${endNo} + ${byte}`
                    done

                    # 処理対象ファイル(receiveディレクトリに存在したファイル)は履歴として常にバックアップする)
                    mv -f ${FILE}.${FLGFILEEXT}   ${GAIBU_RECEIVE_DIR_CH}/CHIFE081/bk/${fileName}.${FLGFILEEXT}_${RSLT_SYSDATE}
                    mv -f ${FILE}                 ${GAIBU_RECEIVE_DIR_CH}/CHIFE081/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}/CHIFE081/bk/${fileName}.${FLGFILEEXT}_${RSLT_SYSDATE}_SK
                    mv -f ${FILE}                 ${GAIBU_RECEIVE_DIR_CH}/CHIFE081/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
                    
                    # OM-2022-0000980 ADD START
                    #---マイナーアラーム発砲
                    sh ${G_TOOLSH}/EOK010210J0.sh ECHB1940KW $JOBNAME "${FILE}が入金スキーマに取込済の情報であるかを確認してください。"
                    exit_rc=${G_RTN_WARN}
                    # OM-2022-0000980 ADD END
                fi

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

# さくらＫＣＳは連携なしＭＮを鳴らさない
#    # コンビニリアル入金連携なしファイルを出力
#    cat /dev/null >  ${MID_DIR_CH}/CHIFM221002_${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}/CHIFE081001_TMP_${JOBNAME}.csv > ${MID_DIR_CH}/CHIFE081001.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}/CHIFE081001_TMP_${JOBNAME}.csv ]; then
	rm ${MID_DIR_CH}/CHIFE081001_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

# OM-2022-0000980 ADD START
#---リターンコードの設定
if [ $exit_rc -ne 0 ]
then
    exit $exit_rc
fi
# OM-2022-0000980 ADD END

exit ${G_RTN_NORMAL}
