#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：同一場所ｅｏ電気契約抽出
#
# 機能          ：ｅｏ光サービスと同一利用場所でｅｏ電気を契約しているデータを抽出する。
#
# コマンド形式  ：EO2DU0170J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v29.00.00       2016/10/03  FJ)柳        【ANK-2990-00-00】【eo電気】同時申込・量販訪販対応（STEP2-2）
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

#
#--- 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}
}

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

#
#--- ファイル定義
#
# 共通アンロード(サービス契約カレント)ファイル
COMULD2_KK0081_CUR=${MID_DIR_CC}/CCIFM020002.csv
# サービス契約グループ設定アンロードファイル
ULDSQL_KK2961_02=${SQL_DIR}/KK_U_KK2961_02.sql
# マッチングツール定義ファイル(サービス契約グループ設定－サービス契約)
MATCHDEF_KK2961=${G_TOOLSH}/util/def/KK_CM_0603.def
# 同一場所ｅｏ電気契約ファイル
TMPFILE_KKIFM717=${LOC_DIR_KK}/KKIFM717001.csv
# サービス契約カレント項目抽出ファイル
TMPFILE_CCIFM020_EXTRACT=${LOC_DIR_KK}/CCIFM020002_extract.csv
# 同一場所ｅｏ電気契約サービス契約マッチング結果ファイル
TMPFILE_KKIFM717_SVC_MATCH=${LOC_DIR_KK}/KKIFM717001_svc.csv
# 同一場所ｅｏ電気契約解約ファイル
TMPFILE_KKIFM717_DSL=${LOC_DIR_KK}/KKIFM717001_dsl.csv
# 同一場所ｅｏ電気契約キャンセルファイル
TMPFILE_KKIFM717_CL=${LOC_DIR_KK}/KKIFM717001_cl.csv
# 同一場所ｅｏ電気契約申込有ファイル
TMPFILE_KKIFM717_MSKM=${LOC_DIR_KK}/KKIFM717001_mskm.csv
# 同一場所ｅｏ電気契約申込無ファイル
TMPFILE_KKIFM717_NOTMSKM=${LOC_DIR_KK}/KKIFM717001_notmskm.csv
# 同一場所ｅｏ電気契約結合ファイル
TMPFILE_KKIFM717_CAT=${LOC_DIR_KK}/KKIFM717001_cat.csv
# 同一場所ｅｏ電気契約マージファイル
TMPFILE_KKIFM717_MERGE=${LOC_DIR_KK}/KKIFM717001_merge.csv

#
#--- レコード長定義
#
# 同一場所ｅｏ電気契約サービス契約マッチング結果ファイルのレコード長
RECLEN_KKIFM717_SVC_MATCH=56
# 同一場所ｅｏ電気契約結合ファイルのレコード長
RECLEN_KKIFM717_CAT=34

#
#--- マッチングツール環境変数
#
export ZTLTMPDIR=$ULD_WORK_DIR
export ZTLOUTFILE=$TMPFILE_KKIFM717_SVC_MATCH
export TMPFILE_KKIFM717
export TMPFILE_CCIFM020_EXTRACT

#
#--- ■初期処理
#
# 各ファイルの存在チェックを行う
if [ ! -r $ULDSQL_KK2961_02 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($ULDSQL_KK2961_02) "
    echo $JOBNAME " File is nonexist($ULDSQL_KK2961_02) "
    exit ${G_RTN_ERROR}
elif [ ! -r $MATCHDEF_KK2961 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($MATCHDEF_KK2961) "
    echo $JOBNAME " File is nonexist($MATCHDEF_KK2961) "
    exit ${G_RTN_ERROR}
fi 

#
#--- アンロード(サービス契約グループ設定)
#
sh ${G_TOOLSH}/EOKULD02.sh $ULDSQL_KK2961_02 $TMPFILE_KKIFM717

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

#
#--- 共通アンロード(サービス契約カレント)ファイルから必要項目を抽出
#
# bsort用項目定義
BSORT_DEF_CCIFM020_EXTRACT="@SVC_KEI_NO=0.10 @SVC_DSL_YMD=32.8 @SVC_CANCEL_YMD=21.8"

bsortex -define $BSORT_DEF_CCIFM020_EXTRACT -copy -record recform=txtcsv \
        -input file=$COMULD2_KK0081_CUR reclen=$ULD2_REC_LEN_KK0081 \
               reconst="@SVC_KEI_NO,@SVC_DSL_YMD,@SVC_CANCEL_YMD" \
        -output file=$TMPFILE_CCIFM020_EXTRACT

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR $rc $COMULD2_KK0081_CUR
fi

#
#--- ファイルマッチング
#
${G_TOOLSH}/util/bin/ZTLMAT01 $MATCHDEF_KK2961

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

#
#--- 日付項目別にファイル分割
#
# bsort用項目定義
BSORT_DEF_KKIFM717_SVC_MATCH="@SVKEI_GRP_SKBT_NO=0.12 @SVC_KEI_NO=1.10 @SVC_DSL_YMD=2.8 @SVC_CANCEL_YMD=3.8"

# 解約ファイルの作成
# (サービス解約年月日≠NULLのレコードのみ)
bsortex -define $BSORT_DEF_KKIFM717_SVC_MATCH -copy -record recform=txtcsv \
        -input file=$TMPFILE_KKIFM717_SVC_MATCH reclen=$RECLEN_KKIFM717_SVC_MATCH \
        -output file=$TMPFILE_KKIFM717_DSL case="@SVC_DSL_YMDasc.gt.' '" \
                reconst="@SVKEI_GRP_SKBT_NO,@SVC_DSL_YMD"

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR $rc $TMPFILE_KKIFM717_SVC_MATCH
fi

# キャンセルファイルの作成
# (サービス解約年月日＝NULL かつ サービスキャンセル年月日≠NULLのレコードのみ)
bsortex -define $BSORT_DEF_KKIFM717_SVC_MATCH -copy -record recform=txtcsv \
        -input file=$TMPFILE_KKIFM717_SVC_MATCH reclen=$RECLEN_KKIFM717_SVC_MATCH \
        -output file=$TMPFILE_KKIFM717_CL case="@SVC_DSL_YMDasc.lt.' '.and.@SVC_CANCEL_YMDasc.gt.' '" \
                reconst="@SVKEI_GRP_SKBT_NO,@SVC_CANCEL_YMD"

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR $rc $TMPFILE_KKIFM717_SVC_MATCH
fi

# 申込有ファイルの作成
# (サービス解約年月日＝NULL かつ サービスキャンセル年月日＝NULL かつ サービス契約番号≠NULLのレコードのみ)
bsortex -define $BSORT_DEF_KKIFM717_SVC_MATCH -copy -record recform=txtcsv \
        -input file=$TMPFILE_KKIFM717_SVC_MATCH reclen=$RECLEN_KKIFM717_SVC_MATCH \
        -output file=$TMPFILE_KKIFM717_MSKM case="@SVC_DSL_YMDasc.lt.' '.and.@SVC_CANCEL_YMDasc.lt.' '.and.@SVC_KEI_NOasc.gt.' '" \
                reconst="@SVKEI_GRP_SKBT_NO,'20991231'.8ascA"

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR $rc $TMPFILE_KKIFM717_SVC_MATCH
fi

# 申込無ファイルの作成
# (サービス解約年月日＝NULL かつ サービスキャンセル年月日＝NULL かつ サービス契約番号＝NULLのレコードのみ)
bsortex -define $BSORT_DEF_KKIFM717_SVC_MATCH -copy -record recform=txtcsv \
        -input file=$TMPFILE_KKIFM717_SVC_MATCH reclen=$RECLEN_KKIFM717_SVC_MATCH \
        -output file=$TMPFILE_KKIFM717_NOTMSKM case="@SVC_DSL_YMDasc.lt.' '.and.@SVC_CANCEL_YMDasc.lt.' '.and.@SVC_KEI_NOasc.lt.' '" \
                reconst="@SVKEI_GRP_SKBT_NO,@SVC_DSL_YMD"

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR $rc $TMPFILE_KKIFM717_SVC_MATCH
fi

#
#--- ファイル結合
#
cat $TMPFILE_KKIFM717_DSL $TMPFILE_KKIFM717_CL $TMPFILE_KKIFM717_MSKM $TMPFILE_KKIFM717_NOTMSKM > $TMPFILE_KKIFM717_CAT

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

#
#--- サービス契約グループ識別番号単位で日付項目が最大であるレコードのみ残す
#
# bsort用項目定義
BSORT_DEF_KKIFM717_CAT="@SVKEI_GRP_SKBT_NO=0.12 @YMD_CLM=1.8"

# サービス契約グループ識別番号(昇順)、日付項目(降順)にソートした結果を
# サービス契約グループ識別番号ごとに集約し、最初のレコードのみを出力する。
bsortex -define $BSORT_DEF_KKIFM717_CAT -sort key="@SVKEI_GRP_SKBT_NOasca,@YMD_CLMascr" -record recform=txtcsv \
        -input file=$TMPFILE_KKIFM717_CAT reclen=$RECLEN_KKIFM717_CAT \
    | bsortex -define $BSORT_DEF_KKIFM717_CAT -merge key="@SVKEI_GRP_SKBT_NOasc" -record recform=txtcsv \
              -input reclen=$RECLEN_KKIFM717_CAT -summary suppress first \
              -output file=$TMPFILE_KKIFM717_MERGE

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR $rc $TMPFILE_KKIFM717_CAT
fi

#
#--- 終了処理
#
# 一時ファイル削除
rm -f $TMPFILE_KKIFM717 $TMPFILE_CCIFM020_EXTRACT $TMPFILE_KKIFM717_SVC_MATCH \
$TMPFILE_KKIFM717_DSL $TMPFILE_KKIFM717_CL $TMPFILE_KKIFM717_MSKM $TMPFILE_KKIFM717_NOTMSKM $TMPFILE_KKIFM717_CAT

#
#--- Javaプログラムログ
#--- (本shはJavaプログラムを呼び出してはいないが、出力しておく)
#
# Javaプログラム開始(Program_Start)
sh ${G_TOOLSH}/EOK010210J0.sh CS00027I $JOBNAME
# Javaプログラム終了(Program_End)
sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME

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

exit ${G_RTN_NORMAL}
