#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：ｅｏ光電話呼情報入力チェック
#
# 機能          ：１．ｅｏ光電話呼情報入力チェック
#
#(1)下記のファイルを取込み、ファイルの入力チェックを行う。
#  eo光電話利用呼情報データファイル
#  eo光電話利用呼情報データファイル(前回)
#(2)出力ファイルには、データレコードのみ出力する。
#(3)入力ファイルを前回分としリネームする。
#
#※パラメータ変数.フリー項目は以下の順番で設定する。
#  0.eo光電話利用呼情報データファイル格納先ディレクトリ
#  1.eo光電話利用呼情報データファイルのファイル名
#  2.eo光電話利用呼情報データファイル(前回)のファイル名
#  3.ｅｏ光電話入力エラーファイルのファイル名
#  4.eo光電話利用呼情報データファイルのファイル定義名
#  5.eo光電話利用呼情報データファイル(ヘッダ)のファイル定義名
#  6.eo光電話利用呼情報データファイル(データ)のファイル定義名
#  7.eo光電話利用呼情報データファイル(トレーラ)のファイル定義名
#  8.ｅｏ光電話入力エラーファイルのファイル定義名
#  9.050アプリ利用呼情報ファイルのファイル名
#  10.050アプリ利用呼情報ファイルのファイル定義名
#
# コマンド形式  ：EO3080220J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v35.00.00       2017/11/09  FJ）清原     【ANK-3192-00-00】LaLaCallの通話明細情報の取得タイミング変更
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
[ $# -eq 2 ] &&TAJUKIDO="_$2"

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

#--システム年月日時分秒取得
. EOK010410J0.sh "2"
SYSTIME=${RSLT_OPEDATE}`echo ${RSLT_SYSDATE} | cut -c 9-`

#---ワークファイル削除モード
WK_RM=true

##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

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

P1="OPD=${RSLT_OPEDATE},"
P2="SVCCTL=JBSbatUnitServiceControl,"
P3="JOB=EO3080220J0,"
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=${MID_DIR_AC}/;ACIFE069001.txt;ACIFE069002.txt;ACIFM079003_${SYSTIME}.csv;ACIFE069.def;ACIFM075.def;ACIFM076.def;ACIFM077.def;ACIFM079.def;ACIFM204005.csv;ACIFM204.def"
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

#
#--- ファイル定義
#
SOURCEFILE=${MID_DIR_AC}/ACIFE069001_*.txt
TARGETFILE=${MID_DIR_AC}/ACIFE069002.txt

SOURCEFILE_CNT=`ls -1 ${MID_DIR_AC}/ACIFE069001_*.txt 2> /dev/null | wc -l `

OUTFILE079=${MID_DIR_AC}/ACIFM079003.csv
OUTFILE079_SYSTIME=${MID_DIR_AC}/ACIFM079003_${SYSTIME}.csv
OUTFILE079_WK=${MID_DIR_AC}/${JOBNAME}_ACIFM079003_WK.csv
OUTFILE204=${MID_DIR_AC}/ACIFM204005.csv
OUTFILE204_WK=${MID_DIR_AC}/${JOBNAME}_ACIFM204005_WK.csv



#
#--- 各ファイルのクリアを行う
#
cat /dev/null > $OUTFILE079

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

cat /dev/null > $OUTFILE204

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


#
#--- ファイルのチェックを行う
#
if [ 0 -eq $SOURCEFILE_CNT ]
then
    #
    #------ 今回分ファイルが存在しない場合、正常終了とする。（先行処理にてワーニングとしているため当処理では正常終了として処理）
    #
        sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
        sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME
        exit ${G_RTN_NORMAL}
fi
#

#
#--- ファイルのチェックを行う
#
if [ ! -r $TARGETFILE ]
then
    #
    #------ 過去分ファイルが存在しない場合、エラー発生
    #
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " FileNotFound Error($SVC mv:TARGETFILE=$TARGETFILE) "
        echo $JOBNAME " FileNotFound Error($SVC mv:TARGETFILE=$TARGETFILE) "
        exit ${G_RTN_ERROR}
fi

# ｅｏ光電話利用呼情報データファイルの件数分javaを実行する
for SOURCEFILE_CRT in `ls -1 ${SOURCEFILE}`
do 
    FILENAME=`basename ${SOURCEFILE_CRT}`
    P18="FREE=${MID_DIR_AC}/;${FILENAME};ACIFE069002.txt;ACIFM079003.csv;ACIFE069.def;ACIFM075.def;ACIFM076.def;ACIFM077.def;ACIFM079.def;ACIFM204005.csv;ACIFM204.def"
    PARA="$P1$P2$P3$P4$P5$P6$P7$P8$P9$P10$P11$P12$P13$P14$P15$P16$P17$P18"
    #
    #---ＡＰＬ起動
    #
    java ${JAVA_OPTION} -jar ${JAR_DIR}/koptBatch.jar $PARA
    rc=$?
    ERR_FLG=0
    if [ $rc -ne 0 ]
    then
       if [ $rc -ne 4 ]
       then
           if [ $rc -ne 8 ]
           then
               if [ $rc -ne 127 ]
               then
                  sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
                  echo $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
                  exit ${G_RTN_ERROR}
               fi
           fi
        fi
        ERR_FLG=1
    fi
    exit_rc=$rc
    
    # リターンコードが異常の場合はエラーとして処理を終了する。
    if [ $exit_rc -eq 127 ]
    then
        #
        #--- ジョブの終了メッセージを出力する
        #
        sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
        sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME
        
        exit $exit_rc
    fi
    
    # 呼情報ファイルを過去分としてリネームする　※上書き可
    cp -f ${SOURCEFILE_CRT} ${TARGETFILE}

    # JAVAの出力ファイルを退避ファイルに蓄積する
    cat ${OUTFILE079} >> ${OUTFILE079_WK}
    cat ${OUTFILE204} >> ${OUTFILE204_WK}
done

# 蓄積した退避ファイルから出力ファイルに戻す
cp -f ${OUTFILE079_WK} ${OUTFILE079_SYSTIME}
cp -f ${OUTFILE204_WK} ${OUTFILE204}

#ワーク削除
if [ $WK_RM = "true" ]
then
    rm -f ${OUTFILE079}
    rm -f ${OUTFILE079_WK}
    rm -f ${OUTFILE204_WK}
fi

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

exit $exit_rc


