#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ： EO2I00210J0.sh
#
# 機能          ：ＶＣＭＳ異動情報ファイル取込
#
# コマンド形式  ：EO2I00210J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日            変更者               障害／仕様変更No.
# v52.00         2020/10/23        GDC)ジョバニー       【ANK-3910-00-00】定額サービスリース品追加対応
# v72.00         2024/08/20        FU)浅井              【ANK-4600-00-00】定額サービス リース満了対応に伴うeo顧客側対応
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

#
#--- アンロード関数
#       p1：テーブル名／クエリファイル名
EXEC_UNLOAD()
{
	# 出力ファイルの初期化
	cat /dev/null > $2
	rc=$?
	if [ $rc -ne 0 ]
	then
		sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($2:rc=$rc) "
		echo $JOBNAME " File cat error($2:rc=$rc) "
		exit ${G_RTN_ERROR}
	fi
	
	# unload
	sh ${G_TOOLSH}/EOKULD02.sh $1 $2
	
	rc=$?
	if [ $rc -ne 0 ]
	then
		sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " unload error($2:rc=$rc) "
		echo $JOBNAME " unload error($2:rc=$rc) "
		exit ${G_RTN_ERROR}
	fi
}

#
#---業務で必要な変数定義
#

# 1. File existence check
WORK_DIR=${GAIBU_RECEIVE_DIR_KK}/KKIFE457/
SOURCE_FILE=${WORK_DIR}/VB0601.tar.gz
BACKUP_FILE=${WORK_DIR}/bk/VB0601.tar.gz

if [ -z `find ${SOURCE_FILE} | tail -1` ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh EKKB2100AW $JOBNAME 
    exit ${G_RTN_WARN}
fi


# 2. Copy (Backup)
cp ${SOURCE_FILE} ${BACKUP_FILE}


if [ -z `find ${BACKUP_FILE} | tail -1` ]
then
	sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Copy Error($SVC copy:rc=$rc) "
    echo $JOBNAME " Copy Error($SVC copy:rc=$rc) "
fi


# 3. Extraction
tar -C ${WORK_DIR} -zxvf ${SOURCE_FILE}


# 4. Unload

# ANK-4600-00-00 MOD START
# WRK_PRM_ID='VCMS_IDO_INFO_FILE'
# KK_U_ZM0321_02=${SQL_DIR}/KK_U_ZM0321_02.sql
KK_U_ZM0321_02=${SQL_DIR}/KK_U_ZM0321_14.sql
# ANK-4600-00-00 MOD END

KK_U_ZM0321_02_TMP=${SQL_DIR}/${JOBNAME}.KK_U_ZM0321_02_TMP.sql
KKZM0321_02=${MID_DIR_KK}/${JOBNAME}_KKZM0321_02.csv

cp ${KK_U_ZM0321_02} ${KK_U_ZM0321_02_TMP}

# ANK-4600-00-00 MOD START
# sed -i, -e 0,/?/s/?/"'"${WRK_PRM_ID}"'"/ ${KK_U_ZM0321_02_TMP}
# ANK-4600-00-00 MOD END

sed -i, -e 0,/?/s/?/"'"${OPD}"'"/ ${KK_U_ZM0321_02_TMP}
sed -i, -e 0,/?/s/?/"'"${OPD}"'"/ ${KK_U_ZM0321_02_TMP}

EXEC_UNLOAD ${KK_U_ZM0321_02_TMP} ${KKZM0321_02}

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

# 5. Distribute to arrays

# ANK-4600-00-00 MOD START
# read FILE_DATA < ${KKZM0321_02}
MSG_FILENAME=""
while read FILE_DATA
do
# ANK-4600-00-00 MOD END

    FILE_PATH_NAME=''

# ANK-4600-00-00 MOD START
#    MSG_FILENAME=""
# ANK-4600-00-00 MOD END

    for FILE_INFO in `echo ${FILE_DATA} | sed -e 's/"//g' | sed -e "s/,/\\t/g"`
    do

        FILE_INFO_ARRAY=(`echo ${FILE_INFO} | sed -e "s/:/\\t/g"`)
        FILE_NAME=${FILE_INFO_ARRAY[1]}
        TRN_KNRI_NO=${FILE_INFO_ARRAY[0]}
        CHK_FLG=${FILE_INFO_ARRAY[2]}

        FILE_PATH_NAME=`find ${WORK_DIR}${FILE_NAME}* | tail -1`

        # 6. File existence check
        if [ -z "$FILE_PATH_NAME" ]
        then

            if [ $CHK_FLG -eq 1 ]
            then
                 # 7. Log Message
                 if [ "${MSG_FILENAME}" = "" ]
                 then
                     MSG_FILENAME=${FILE_NAME}
                 else
                     MSG_FILENAME_TMP="${MSG_FILENAME},${FILE_NAME}"
                     MSG_FILENAME=${MSG_FILENAME_TMP}
                 fi
            fi
        else
             # 8. Java Call		
            SOURCEFILE=$FILE_PATH_NAME
            FILE_PATH=`ls -r $SOURCEFILE | head -n 1`
            DATA_CNT=`wc -l ${FILE_PATH} | awk '{printf $1}'`
            DL_KNRI_CTL_FLG=1
            HEADER_FLG=0
            FILE_SAVE_MON_CNT=""

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

            P1="OPD=${OPD},"
            P2="SVCCTL=JBSbatUnitServiceControl,"
            P3="JOB=EO2I00210J0,"
            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=${FILE_PATH};${TRN_KNRI_NO};${DATA_CNT};${FILE_SAVE_MON_CNT};${DL_KNRI_CTL_FLG};${HEADER_FLG}"
            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

            #
            #---ＡＰＬ起動
            #

            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
                    ERR_FLG=1
                fi
            fi
            exit_rc=$rc

            #処理済ファイルの削除
            rm -f ${FILE_PATH}
        fi
    done

# ANK-4600-00-00 MOD START
done  < ${KKZM0321_02}
# ANK-4600-00-00 MOD END

#処理済ファイルの削除
rm -f ${SOURCE_FILE}

# ファイル未存在時はマイナーアラーム
if [ "${MSG_FILENAME}" != "" ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh EKKB2090AW $JOBNAME " [ファイル名：${MSG_FILENAME}] "
        exit ${G_RTN_WARN}
fi


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

rm -f ${KK_U_ZM0321_02_TMP}

exit $exit_rc
