#!/bin/bash
##############################################################
# システム名         ：eo顧客基幹システム
#
# サブシステム名     ：契約管理システム
#
# シェル名           ：EO2ID0110J0.sh
#
# 機能               ：未連携の電子マネー特典適用対象データを抽出する。
#
# コマンド形式       ：EO2ID0110J0.sh
#
# 実行環境           ：.../app/shl
#
# 終了ステータス     ：ゼロ以外異常
#
# 特記事項           ：特になし
#
# 変更履歴           ：変更日         変更者       障害／仕様変更No.
# v57.00.00           2022/01/18      FJ)舘山      ANK-4208-00-00_電子マネー特典導入対応
# v57.00.01           2022/02/25      FJ)舘山      重複行の削除
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1


if [ "${OPD}" = "" ]; then
   . EOK010310J0.sh "ODATE"
else
    RSLT_OPEDATE="${OPD}"
fi
OPEDATE="${RSLT_OPEDATE}"

#---システム日付(RSLT_SYSDATE)をyyyyMMddHHmmss形式で取得
. EOK010410J0.sh 2
#

##############################################################
# 共通関数
##############################################################

#
#--- アンロード関数
#       p1：出力ファイル名
#       p2：クエリファイル名
#       p3：バインド変数置換文字
EXEC_UNLOAD()
{
    local _OTF=$1
    local _SQL_FILE=$2
    local _BIND_VAL=$3
    local _SQL_WORK_FILE=${ULD_WORK_DIR}/${JOBNAME}.W_ULD.sql

    # SQLクエリファイル初期化
    cat /dev/null > ${_SQL_WORK_FILE}
    
    # SQL定義ファイルが存在しない場合エラー
    if [ ! -r ${_SQL_FILE} ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${_SQL_FILE}) "
        echo $JOBNAME " File is nonexist(${_SQL_FILE}) "
        exit ${G_RTN_ERROR}
    fi

    cat ${_SQL_FILE} > ${_SQL_WORK_FILE}

    # バインド変数を置き換える
    if [ "${_BIND_VAL}" != "" ]
    then
        for bind in ${_BIND_VAL}
        do
            sed -i -e 0,/?/s/?/"'"$bind"'"/ ${_SQL_WORK_FILE}
        done
    fi

    # 出力ファイルの初期化
    cat /dev/null > ${_OTF}

    # アンロード
    sh ${G_TOOLSH}/EOKULD02.sh ${_SQL_WORK_FILE} ${_OTF}
    rc=$?
    if [ $rc -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " unload error(${_SQL_FILE}:rc=$rc) "
        echo $JOBNAME " unload error(${_SQL_FILE}:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi

    # 一時ファイル削除
    rm -f ${_SQL_WORK_FILE}
}

#
#--- マッチング処理
#      p1：出力ファイルパス
#      p2：マッチングクエリファイルパス
EXEC_MATCHING()
{
    local _OUTFILE=$1
    local _MATCHING_FILE=$2

    # マッチングクエリファイルの存在チェック
    if [ ! -r ${_MATCHING_FILE} ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${_MATCHING_FILE}) "
        echo $JOBNAME " File is nonexist(${_MATCHING_FILE}) "
        exit ${G_RTN_ERROR}
    fi

    # 出力ファイルの初期化
    cat /dev/null > ${_OUTFILE}

    # マッチング実行
    export ZTLOUTFILE=${_OUTFILE}
    ${G_TOOLSH}/util/bin/ZTLMAT01 ${_MATCHING_FILE}

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

#
#--- bsortexコマンド実行時のエラー処理
#      p1：bsortexコマンドの終了コード
#      p2：bsortexコマンドの入力ファイル
BSORT_ERROR()
{
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex error(input file=$2:rc=$1) "
    echo $JOBNAME " bsortex error(input file=$2:rc=$1) "
    exit ${G_RTN_ERROR}
}

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

## マッチングツール定義ファイル(データ項目抽出設定－サービス契約)
MATCHDEF_KKIFM940=${G_TOOLSH}/util/def/KK_CM_1044.def

## データ項目抽出設定アンロードSQL定義ファイル
ULDSQL_KK1391=${SQL_DIR}/KK_U_KK1391_02.sql

## データ項目抽出設定アンロードSQL定義一時ファイル
TMPULDSQL_KK1391=${LOC_DIR_KK}/${JOBNAME}_UDLSQL_KK1391.sql

## サービス契約共通アンロードファイル<カレント>
COMULD2_KK0081_CUR=${MID_DIR_CC}/CCIFM020002.csv

## データ項目抽出設定アンロードファイル
ULDFILE_KK1391=${LOC_DIR_KK}/${JOBNAME}_KK1391.csv

## サービス契約抽出ファイル
TMPFILE_KK0081=${LOC_DIR_KK}/${JOBNAME}_KK0081.csv

## サービス契約マッチングファイル
TMPFILE_KK0081_MACH=${LOC_DIR_KK}/${JOBNAME}_KK0081_MACH.csv

## 特典対象者情報ファイル(ソート)
OUTFILE_KKIFE940_SORT=${MID_DIR_KK}/KKIFM940_SORT.csv

## 特典対象者情報ファイル
OUTFILE_KKIFE940=${MID_DIR_KK}/KKIFM940_001.csv

## 特典対象者情報ファイルのレコード長
RECLEN_KKIFE940=306

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

### 1.2 アンロード処理
EXEC_UNLOAD ${ULDFILE_KK1391} ${ULDSQL_KK1391} "${OPEDATE} ${OPEDATE} ${OPEDATE}"

### 1.3 共通アンロードファイルの抽出処理
BSORT_DEF_COLUMN_KK0081="@SVC_KEI_NO=0.10 @SVC_KEI_STAT=2.3 @SYSID=3.10 @SVC_CD=4.2"
bsortex -define ${BSORT_DEF_COLUMN_KK0081} \
	-copy \
	-record recform=txtcsv \
	-input file=${COMULD2_KK0081_CUR} \
		   reclen=${ULD2_REC_LEN_KK0081} \
		   reconst="@SVC_KEI_NO,@SVC_KEI_STAT,@SYSID,@SVC_CD" \
		   include="@SVC_KEI_STATasc.eq.'100'" \
	-output file=${TMPFILE_KK0081}
rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR ${rc} ${COMULD2_KK0081_CUR}
fi

### 1.4 マッチング処理
export ULDFILE_KK1391
export TMPFILE_KK0081
EXEC_MATCHING ${TMPFILE_KK0081_MACH} ${MATCHDEF_KKIFM940}

## 1.5 出力ファイル編集処理
BSORT_DEF_COLUMN_MACH="@SYSID=0.10 @SVC_KEI_NO=1.10 @DCHSKMST_NO=2.12 @DCHSKM_NM=3.242 @EMONEY_SBT_CD=4.2 @EMONEY_AMNT=5.6 @SVC_CD=6.2"
bsortex -define ${BSORT_DEF_COLUMN_MACH} \
        -sort key="@DCHSKMST_NOasc,@SVC_CDasc" \
        -record recform=txtcsv \
        -input file=${TMPFILE_KK0081_MACH} \
               reclen=${RECLEN_KKIFE940} \
        -output file=${OUTFILE_KKIFE940_SORT} \
               reconst="@SYSID,@SVC_KEI_NO,@DCHSKMST_NO,@DCHSKM_NM,@EMONEY_SBT_CD,@EMONEY_AMNT,EMPTYA"
### --- v57.00.01 DEL START
#        -summary suppress first \
#        -output  file=${OUTFILE_KKIFE940}
### --- v57.00.01 DEL END
rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR ${rc} ${TMPFILE_KK0081_MACH}
fi

### --- v57.00.01 ADD START
BSORT_DEF_COLUMN_MACH_KKIFM940="@SYSID=0.10 @SVC_KEI_NO=1.10 @DCHSKMST_NO=2.12 @DCHSKM_NM=3.242 @EMONEY_SBT_CD=4.2 @EMONEY_AMNT=5.6 @FLG=6.1"
bsortex -define ${BSORT_DEF_COLUMN_MACH_KKIFM940} \
        -merge key="@DCHSKMST_NOasc" \
        -record recform=txtcsv \
        -input file=${OUTFILE_KKIFE940_SORT} \
               reclen=${RECLEN_KKIFE940} \
        -summary suppress first \
        -output  file=${OUTFILE_KKIFE940}
rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR ${rc} ${TMPFILE_KK0081_MACH}
fi

### --- v57.00.01 ADD END
###
#
#---パラメタ定義
#
#
#P1="OPD=${OPEDATE},"
#P2="SVCCTL=JBSbatUnitServiceControl,"
#P3="JOB=EO2ID0110J0,"
#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
#
#
#---ＡＰＬ起動
#
#
#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

### 1.6 終了処理
rm -rf ${ULDFILE_KK1391}
rm -rf ${TMPFILE_KK0081}
rm -rf ${TMPFILE_KK0081_MACH}
### --- v57.00.01 ADD START
rm -rf ${OUTFILE_KKIFE940_SORT}
### --- v57.00.01 ADD END 
#
#--- ジョブの終了メッセージを出力する
#
#sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME

exit $exit_rc
