#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：ＩＤ登録書データ抽出・通知対象物判定 の対象アンロード処理
#
# 機能          ：1.ＩＤ登録書データ抽出・通知対象物判定 の対象アンロード処理
#　                 対象のデータをアンロード、マッチング処理を行う。
#
# コマンド形式  ：EO2140060J3.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
#xxx=xxxxxxx
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

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

# アンロード対応 START
##apl入力用ファイル
OUTFILE=${MID_DIR_KK}/KKIFM19400D_IN.csv
OUTFILE_TMP1=${MID_DIR_KK}/KKIFM19400D.tmp1.csv
OUTFILE_TMP2=${MID_DIR_KK}/KKIFM19400D.tmp2.csv
OUTFILE_TMPSUM=${MID_DIR_KK}/KKIFM19400D.tmpsum.csv

##アンロード用SQLファイル
SQLFILE_KK0561=${SQL_DIR}/KK_U_KK0561_02.sql
SQLFILE_KK0571=${SQL_DIR}/KK_U_KK0571_02.sql
SQLFILE_KK0081=${SQL_DIR}/KK_U_KK0081_79.sql

#アンロード出力用
SQLOUT_KK0561=${MID_DIR_KK}/KKIFM19400D_SQLOUT_KK0561.csv
SQLOUT_KK0571=${MID_DIR_KK}/KKIFM19400D_SQLOUT_KK0571.csv
SQLOUT_KK0081=${MID_DIR_KK}/KKIFM19400D_SQLOUT_KK0081.csv

#ソート結果格納用
KK0081_SORT=${MID_DIR_KK}/KKIFM19400D_KK0081_SORT.csv

#DEF読み込み用
KK0561=${MID_DIR_KK}/KKIFM19400D_KK0561.csv
KK0571=${MID_DIR_KK}/KKIFM19400D_KK0571.csv
KK0081=${MID_DIR_KK}/KKIFM19400D_KK0081.csv

#--- 各ファイルのクリア
rm -f  ${OUTFILE} > /dev/null 2>&1

#--- UNLOAD処理
# KK0561 
sh ${G_TOOLSH}/EOKULD02.sh $SQLFILE_KK0561 $SQLOUT_KK0561 $JOBNAME
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error($SQLFILE_KK0561 unload:rc=$rc) " 
    echo $JOBNAME " UNLOAD Error($SQLFILE_KK0561 unload:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# KK0571 
sh ${G_TOOLSH}/EOKULD02.sh $SQLFILE_KK0571 $SQLOUT_KK0571 $JOBNAME
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error($SQLFILE_KK0571 unload:rc=$rc) " 
    echo $JOBNAME " UNLOAD Error($SQLFILE_KK0571 unload:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# KK0081 
sh ${G_TOOLSH}/EOKULD02.sh $SQLFILE_KK0081 $SQLOUT_KK0081 $JOBNAME
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error($SQLFILE_KK0081 unload:rc=$rc) " 
    echo $JOBNAME " UNLOAD Error($SQLFILE_KK0081 unload:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# 絞込み (SQLで TCHISHO_STAT = '010' に絞っている)
# KK0561 MK_FLG='0'のみに絞り込む
#  ソートキー：0.通知書番号
bsortex \
     -sort key=0.12asc \
     -record recform=txtcsv \
     -input file=${SQLOUT_KK0561} \
            reclen=50 \
            include="4.1asc.eq.'0'" \
     -output file=${KK0561} 

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


# KK0571 MK_FLG='0'のみに絞り込む
#  ソートキー：1.通知書番号
bsortex \
     -sort key=1.12asc \
     -record recform=txtcsv \
     -input file=${SQLOUT_KK0571} \
            reclen=80 \
            include="6.1asc.eq.'0'" \
     -output file=${KK0571} 

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

# KK0081 カレント情報
# ソートキー：0.サービス契約番号、3.予約適用年月日、1.世代登録年月日時分秒
# 絞込み：5.無効フラグ、4.予約適用コード、3.予約適用年月日
bsortex \
     -sort key=0.10asc,3.8asc,1.17asc \
     -record recform=txtcsv \
     -input file=${SQLOUT_KK0081} \
            reclen=90 \
            include="5.1asc.eq.'0',4.1asc.eq.'2',3.8asc.le.'${RSLT_OPEDATE}'" \
     -output file=${KK0081_SORT} 
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " KK0081 Sort Error($SVC sort:rc=$rc) "
    echo $JOBNAME " KK0081 Sort Error($SVC sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#  カレントのサービス契約ステータスが(100,910,920)の値のレコードだけに絞り込む
# マージキー：0.サービス契約番号
bsortex \
     -merge key=0.10asc \
     -record recform=txtcsv \
     -input file=${KK0081_SORT} \
            reclen=90 \
     -summary suppress last \
     -output file=${KK0081} \
             include="2.3asc.eq.'100'.or.2.3asc.eq.'910'.or.2.3asc.eq.'920'"

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

#
# マッチング １回目
# 
DEFFILE=${G_TOOLSH}/util/def/KK_CM_0260.def
TMPDEFFILE=${ULD_WORK_DIR}/KK_CM_0260.tmp.def
export ZTLTMPDIR=${ULD_WORK_DIR}
export ZTLOUTFILE=${OUTFILE_TMP1}

#--- 定義ファイル環境変数設定処理
cat ${DEFFILE} > ${TMPDEFFILE}
sed -i -e s@'${MID_DIR_KK}'@${MID_DIR_KK}@g ${TMPDEFFILE}

#--- マッチング処理
${G_TOOLSH}/util/bin/ZTLMAT01 ${TMPDEFFILE}

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

rm -f  ${TMPDEFFILE} > /dev/null 2>&1

#
# マッチング ２回目
# 
DEFFILE=${G_TOOLSH}/util/def/KK_CM_0261.def
TMPDEFFILE2=${ULD_WORK_DIR}/KK_CM_0261.tmp.def
export ZTLTMPDIR=${ULD_WORK_DIR}
export ZTLOUTFILE=${OUTFILE_TMP2}

#--- 定義ファイル環境変数設定処理
cat ${DEFFILE} > ${TMPDEFFILE2}
sed -i -e s@'${MID_DIR_KK}'@${MID_DIR_KK}@g ${TMPDEFFILE2}

#--- マッチング処理
${G_TOOLSH}/util/bin/ZTLMAT01 ${TMPDEFFILE2}

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

rm -f  ${TMPDEFFILE2} > /dev/null 2>&1

#
# ２つのファイルを結合する
#
cat ${OUTFILE_TMP1} ${OUTFILE_TMP2} > ${OUTFILE_TMPSUM}

# 下記の要領でソートを行う
# ORDER BY KK0571.TCHI_TG_BPIN_NO,KK0571.SVC_KEI_NO
bsortex \
     -sort key=0.12asc,5.10asc \
     -record recform=txtcsv \
     -input file=${OUTFILE_TMPSUM} \
            reclen=100 \
     -output file=${OUTFILE} 

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

rm -f  ${OUTFILE_TMP1} > /dev/null 2>&1
rm -f  ${OUTFILE_TMP2} > /dev/null 2>&1
rm -f  ${OUTFILE_TMPSUM} > /dev/null 2>&1

rm -f  ${KK0081_SORT} > /dev/null 2>&1

rm -f  ${KK0561} > /dev/null 2>&1
rm -f  ${KK0571} > /dev/null 2>&1
rm -f  ${KK0081} > /dev/null 2>&1

# アンロード対応 END


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

exit $rc