#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：光ハイブリッド不整合情報抽出
#
# 機能          ：eoモバイル光ハイブリッドタイプで、ネット契約の紐付けがないなどの不整合情報を抽出する。
#抽出された不整合情報を編集し、光ハイブリッド不整合リストを出力する。
#
#
# コマンド形式  ：EO2AI0110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
#                 2012/09/05  FJ)北谷      IT1-2012-0000986  ファイル名修正
#                 2013/07/07  FJ)江藤      LT-2013-0000175   性能改善
#                                                            KK_U_KK0081_67.sqlを廃止し、KK_U_KK0081_62.sqlへ統合
# v14.00          2015/05/26  FJ)有本      OM-2015-0001265  バックグラウンド実行削除
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
if [ "${OPD}" = "" ]; then
   . EOK010310J0.sh "BDATE"
else
   RSLT_OPEDATE="${OPD}"
fi
OPE_YMD=${RSLT_OPEDATE}

#20120417 MOD CUBE)榮川 START
#SYS_YMDHMS=`date +'%Y%m%d%H%M%S'`
. EOK010410J0.sh 2
#20120417 MOD CUBE)榮川 END

#
#--- ファイル数
#
#20130707 LT-2013-0000175 6→5 MOD START
FILE_NUM=5
#20130707 LT-2013-0000175 6→5 MOD END

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

#
#--- ファイル定義（アウトプットファイル）
#
OUTFILE=${GAIBU_SEND_DIR_KK}/KKL06501/KKL06501_${RSLT_SYSDATE}

#
#--- ファイル定義（アウトプットファイル【ワーク】）
#
OUTFILE_TMP_BF=${MID_DIR_KK}/KKL06501_TMP_BF.csv
OUTFILE_TMP_AF=${MID_DIR_KK}/KKL06501_TMP_AF.csv

OUTFILE_TMP_BF_W=${MID_DIR_KK}/KKL06501_TMP_BF_W.csv
OUTFILE_TMP_AF_W=${MID_DIR_KK}/KKL06501_TMP_AF_W.csv

OUTFILE_TMP_AF_W2=${MID_DIR_KK}/KKL06501_TMP_AF_W2.csv

#OUTFILE_TMP_BF2=${MID_DIR_KK}/KKL06501_TMP_BF2.csv #20130707 LT-2013-0000175 DEL
#OUTFILE_TMP_BF_W2=${MID_DIR_KK}/KKL06501_TMP_BF_W2.csv #20130707 LT-2013-0000175 DEL
#OUTFILE_TMP_AF_W3=${MID_DIR_KK}/KKL06501_TMP_AF_W3.csv #20130707 LT-2013-0000175 DEL
#OUTFILE_TMP_AF_W4=${MID_DIR_KK}/KKL06501_TMP_AF_W4.csv #20130707 LT-2013-0000175 DEL

#
#--- ファイル定義（アウトプットファイル【分割】）
#
OUTFILE_TMP0=${MID_DIR_KK}/KKL06501_1.csv
OUTFILE_TMP1=${MID_DIR_KK}/KKL06501_2.csv
OUTFILE_TMP2=${MID_DIR_KK}/KKL06501_3.csv
OUTFILE_TMP3=${MID_DIR_KK}/KKL06501_4.csv
OUTFILE_TMP4=${MID_DIR_KK}/KKL06501_5.csv
#OUTFILE_TMP5=${MID_DIR_KK}/KKL06501_6.csv #20130707 LT-2013-0000175 DEL

#
#--- ファイル定義（ＳＱＬファイル）
#
SQLFILE0=${SQL_DIR}/KK_U_KK0081_21.sql
SQLFILE1=${SQL_DIR}/KK_U_KK0081_62.sql
SQLFILE2=${SQL_DIR}/KK_U_KK0081_63.sql
SQLFILE3=${SQL_DIR}/KK_U_KK0081_64.sql
SQLFILE4=${SQL_DIR}/KK_U_KK0081_65.sql
#SQLFILE5=${SQL_DIR}/KK_U_KK0081_67.sql #20130707 LT-2013-0000175 DEL

#
#--- ファイル定義（ＳＱＬファイル【ワーク】）
#
MKSQLFILE0=${MID_DIR_KK}/KK_U_KK0081_21_WORK.sql
MKSQLFILE1=${MID_DIR_KK}/KK_U_KK0081_62_WORK.sql
MKSQLFILE2=${MID_DIR_KK}/KK_U_KK0081_63_WORK.sql
MKSQLFILE3=${MID_DIR_KK}/KK_U_KK0081_64_WORK.sql
MKSQLFILE4=${MID_DIR_KK}/KK_U_KK0081_65_WORK.sql
#MKSQLFILE5=${MID_DIR_KK}/KK_U_KK0081_67_WORK.sql #20130707 LT-2013-0000175 DEL

#
#--- 作業用ファイル
#
WKFILE=${MID_DIR_KK}/WK.txt
WKFILE2=${MID_DIR_KK}/WK2.txt

#
#--- 各ファイルの存在チェックを行う
#
COUNT=0
ERR_CNT=0
while [ ${COUNT} -lt ${FILE_NUM} ]
do
    #
    #--- ＳＱＬファイル名生成
    #
    SQLFILE_WORK=`eval echo '$SQLFILE'${COUNT}`

    #
    #--- ＳＱＬファイル存在チェック
    #
    if [ ! -r ${SQLFILE_WORK} ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${SQLFILE_WORK}) "
        echo $JOBNAME " File is nonexist(${SQLFILE_WORK}) "
        ERR_CNT=$((${ERR_CNT} + 1))
    fi

    COUNT=$((${COUNT} + 1))
done

#
#--- エラー発生の場合
#
if [ ${ERR_CNT} -ne 0 ]
then
    exit ${G_RTN_ERROR}
fi

#
#--- アンロードファイルのクリアを行う
#
cat /dev/null > ${OUTFILE}

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

#
#--- UNLOAD処理を実行する
#
COUNT=0
while [ ${COUNT} -lt ${FILE_NUM} ]
do
    #
    #--- アウトプットファイル名生成
    #
    OUTFILE_TMP_WORK=`eval echo '$OUTFILE_TMP'${COUNT}`

    #
    #--- ＳＱＬファイル名生成
    #
    SQLFILE_WORK=`eval echo '$SQLFILE'${COUNT}`
    MKSQLFILE_WORK=`eval echo '$MKSQLFILE'${COUNT}`

    #
    #--- ワークファイル作成（パラメータセット）
    #
    cat $SQLFILE_WORK | sed -e "s/???1???/'${OPE_YMD}'/" \
        | sed -e "s/???2???/'${OPE_YMD}'/" | sed -e "s/???3???/'${OPE_YMD}'/" \
        | sed -e "s/???4???/'${OPE_YMD}'/" | sed -e "s/???5???/'${OPE_YMD}'/" \
        | sed -e "s/???6???/'${OPE_YMD}'/" | sed -e "s/???7???/'${OPE_YMD}'/" \
        | sed -e "s/???8???/'${OPE_YMD}'/" | sed -e "s/???9???/'${OPE_YMD}'/" \
        | sed -e "s/???10???/'${OPE_YMD}'/" | sed -e "s/???11???/'${OPE_YMD}'/" \
        | sed -e "s/???12???/'${OPE_YMD}'/" | sed -e "s/???13???/'${OPE_YMD}'/" \
        | sed -e "s/???14???/'${OPE_YMD}'/" | sed -e "s/???15???/'${OPE_YMD}'/" \
        | sed -e "s/???16???/'${OPE_YMD}'/" | sed -e "s/???17???/'${OPE_YMD}'/" \
        | sed -e "s/???18???/'${OPE_YMD}'/" | sed -e "s/???19???/'${OPE_YMD}'/" \
        | sed -e "s/???20???/'${OPE_YMD}'/" | sed -e "s/???21???/'${OPE_YMD}'/" \
        | sed -e "s/???22???/'${OPE_YMD}'/" | sed -e "s/???23???/'${OPE_YMD}'/" > $MKSQLFILE_WORK

    #
    #--- UNLOAD処理（切り離し実行）
    #
# OM-2015-0001265 2015/05/26 有本 MOD START
#    sh ${G_TOOLSH}/EOKULD02.sh ${MKSQLFILE_WORK} ${OUTFILE_TMP_WORK} ${JOBNAME} &
    sh ${G_TOOLSH}/EOKULD02.sh ${MKSQLFILE_WORK} ${OUTFILE_TMP_WORK} ${JOBNAME}

    #
    #--- ＰＩＤ取得
    #
#    PID=$!
#    ARRAY_PIDS[${COUNT}]=${PID}
     ARRAY_RST[${COUNT}]=$?
# OM-2015-0001265 2015/05/26 有本 MOD END

    COUNT=$((${COUNT} + 1))
done

#
#--- UNLOAD処理の結果を確認する
#
COUNT=0
ERR_CNT=0
# OM-2015-0001265 2015/05/26 有本 MOD START
#for ARRAY_PID in "${ARRAY_PIDS[@]}";
for ARRAY_RST in "${ARRAY_RST[@]}";
do
    #
    #--- バックグラウンドの処理が終わるまで待機
    #
#    wait ${ARRAY_PID}

    #
    #--- 結果確認
    #
#    rc=$?
    rc=${ARRAY_RST}
# OM-2015-0001265 2015/05/26 有本 MOD END
    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) "
        ERR_CNT=$((${ERR_CNT} + 1))

        #
        #--- エラーの場合は、次の処理へ
        #
        COUNT=$((${COUNT} + 1))
        continue
    fi

    COUNT=$((${COUNT} + 1))
done

#
#--- エラー発生の場合
#
if [ ${ERR_CNT} -ne 0 ]
then
    exit ${G_RTN_ERROR}
fi

#20130707 LT-2013-0000175 KK_U_KK0081_62.sqlとKK_U_KK0081_67.sqlの結果マージ処理を削除 DEL START
##
##--- ファイル結合
##
#cat ${OUTFILE_TMP1} ${OUTFILE_TMP5} > ${OUTFILE_TMP_BF_W2}
#
#rc=$?
#if [ $rc -ne 0 ]
#then
#    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error(${OUTFILE_TMP_BF_W2}:rc=$rc) "
#    echo $JOBNAME " File cat error(${OUTFILE_TMP_BF_W2}:rc=$rc) "
#    exit ${G_RTN_ERROR}
#fi
#
##
##--- ＳＯＲＴ
##
#bsort -s -z3000 -Tflt -t, -9.99asca,1.99asca,6.99asca, -o ${OUTFILE_TMP_BF2} ${OUTFILE_TMP_BF_W2}
#
#rc=$?
#if [ $rc -ne 0 ]
#then
#    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT Error(${SVC} sort:rc=$rc) "
#    echo $JOBNAME " SORT Error(${SVC} sort:rc=$rc) "
#    exit ${G_RTN_ERROR}
#fi
#
##
##--- 契約数変更処理
##
#cat /dev/null > ${OUTFILE_TMP_AF_W3}
#cat /dev/null > ${OUTFILE_TMP_AF_W4}
#LINE_CNT2=0
#while read line2
#do
#    SUM_CNT=0
#    if [ ${LINE_CNT2} -eq 0 ]
#    then
#        #
#        #--- ファイル一行目の場合
#        #
#        echo ${line2} | awk -F, '{print $1","$2","$3","$4","$5","$6","$7","$8","$9","$10}' > ${OUTFILE_TMP_AF_W4}
#    else
#        #
#        #--- 請求契約番号取得、サービス契約数
#        #
#        SEIKY_KEI_NO=`echo ${line2} | awk -F, '{print $10}'`
#        KEI_CNT=`echo ${line2} | awk -F, '{print $5}' | sed -e 's/"//g'`
#
#        if [ ${SEIKY_KEI_NO} = ${SEIKY_KEI_NO_BF} ]
#        then
#            #
#            #--- 請求契約番号が一致する場合、サービス契約数を合計する
#            #
#            SUM_CNT=$((${KEI_CNT} + ${KEI_CNT_BF}))
#            echo ${line2} | awk -F, '{print $1","$2","$3","$4",\"'`echo \"${SUM_CNT}\"`'\","$6","$7","$8","$9","$10}' > ${OUTFILE_TMP_AF_W4}
#        else
#            #
#            #--- 請求契約番号が一致しない場合
#            #
#            cat ${OUTFILE_TMP_AF_W4} >> ${OUTFILE_TMP_AF_W3}
#            echo ${line2} | awk -F, '{print $1","$2","$3","$4","$5","$6","$7","$8","$9","$10}' > ${OUTFILE_TMP_AF_W4}
#        fi
#    fi
#
#    #
#    #--- 請求契約番号（一行前）取得
#    #
#    SEIKY_KEI_NO_BF=`echo ${line2} | awk -F, '{print $10}'`
#    #
#    #--- サービス契約数（一行前）取得
#    #
#    KEI_CNT_BF=0
#    if [ ${SUM_CNT} -eq 0 ]
#    then
#        KEI_CNT_BF=`echo ${line2} | awk -F, '{print $5}' | sed -e 's/"//g'`
#    else
#        KEI_CNT_BF=${SUM_CNT}
#    fi
#
#    LINE_CNT2=$((${LINE_CNT2} + 1))
#done < ${OUTFILE_TMP_BF2}
#
#if [ ${LINE_CNT2} -ne 0 ]
#then
#    cat ${OUTFILE_TMP_AF_W4} >> ${OUTFILE_TMP_AF_W3}
#fi
#20130707 LT-2013-0000175 KK_U_KK0081_62.sqlとKK_U_KK0081_67.sqlの結果マージ処理を削除 DEL END

#
#--- ファイル結合
#
#20130707 LT-2013-0000175 MOD START
#cat ${OUTFILE_TMP0} ${OUTFILE_TMP_AF_W3} ${OUTFILE_TMP2} > ${OUTFILE_TMP_BF_W}
cat ${OUTFILE_TMP0} ${OUTFILE_TMP1} ${OUTFILE_TMP2} > ${OUTFILE_TMP_BF_W}
#20130707 LT-2013-0000175 MOD END

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

#
#--- ＳＯＲＴ
#
bsort -s -z3000 -Tflt -t, -9.99asca,1.99asca,6.99asca, -o ${OUTFILE_TMP_BF} ${OUTFILE_TMP_BF_W}

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

#
#--- 作業用ファイル作成
#
echo '－' > ${WKFILE}
nkf -s ${WKFILE} > ${WKFILE2}

#
#--- 契約数変更処理
#
cat /dev/null > ${OUTFILE_TMP_AF_W}
LINE_CNT=0
while read line
do
    if [ ${LINE_CNT} -eq 0 ]
    then
        #
        #--- ファイル一行目の場合
        #
        echo ${line} | awk -F, '{print $1","$2","$3","$4","$5","$6","$7","$8","$9}' >> ${OUTFILE_TMP_AF_W}
    else
        #
        #--- 請求契約番号取得
        #
        SEIKY_KEI_NO=`echo ${line} | awk -F, '{print $10}'`

        if [ ${SEIKY_KEI_NO} = ${SEIKY_KEI_NO_BF} ]
        then
            #
            #--- 請求契約番号が一致する場合
            #
            echo ${line} | awk -F, '{print $1","$2","$3","$4",\"'`cat ${WKFILE2}`'\","$6","$7","$8","$9}' >> ${OUTFILE_TMP_AF_W}
        else
            #
            #--- 請求契約番号が一致しない場合
            #
            echo ${line} | awk -F, '{print $1","$2","$3","$4","$5","$6","$7","$8","$9}' >> ${OUTFILE_TMP_AF_W}
        fi
    fi

    #
    #--- 請求契約番号（一行前）取得
    #
    SEIKY_KEI_NO_BF=`echo ${line} | awk -F, '{print $10}'`

    LINE_CNT=$((${LINE_CNT} + 1))
done < ${OUTFILE_TMP_BF}

#
#--- ファイル結合
#
cat ${OUTFILE_TMP_AF_W} ${OUTFILE_TMP3} ${OUTFILE_TMP4} > ${OUTFILE_TMP_AF_W2}

#
#--- ＳＯＲＴ
#
bsort -s -z3000 -Tflt -t, -0.99asca,1.99asca,4.99asca,5.99asca, -o ${OUTFILE_TMP_AF} ${OUTFILE_TMP_AF_W2}

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

#
#--- 改行コード変換（\n -> \r\n）
#
#perl -p -e 's/\n/\r\n/' < ${OUTFILE_TMP_AF} > ${OUTFILE}

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

#
#--- ファイル結合結果をアウトファイルに書出す
#
cat ${OUTFILE_TMP_AF} > ${OUTFILE}

#
#--- ワークファイルの削除
#
rm ${OUTFILE_TMP_BF} > /dev/null 2>&1
rm ${OUTFILE_TMP_AF} > /dev/null 2>&1

rm ${OUTFILE_TMP_BF_W} > /dev/null 2>&1
rm ${OUTFILE_TMP_AF_W} > /dev/null 2>&1

rm ${OUTFILE_TMP_AF_W2} > /dev/null 2>&1

rm ${WKFILE} > /dev/null 2>&1
rm ${WKFILE2} > /dev/null 2>&1

#rm ${OUTFILE_TMP_BF2} > /dev/null 2>&1 #20130707 LT-2013-0000175 DEL
#rm ${OUTFILE_TMP_BF_W2} > /dev/null 2>&1 #20130707 LT-2013-0000175 DEL
#rm ${OUTFILE_TMP_AF_W3} > /dev/null 2>&1 #20130707 LT-2013-0000175 DEL
#rm ${OUTFILE_TMP_AF_W4} > /dev/null 2>&1 #20130707 LT-2013-0000175 DEL

COUNT=0
while [ ${COUNT} -lt ${FILE_NUM} ]
do
    #
    #--- アウトプットファイル名生成
    #
    OUTFILE_TMP_WORK=`eval echo '$OUTFILE_TMP'${COUNT}`
    MKSQLFILE_WORK=`eval echo '$MKSQLFILE'${COUNT}`

    #
    #--- ワークファイルの削除
    #
    rm ${OUTFILE_TMP_WORK}
    rm ${MKSQLFILE_WORK}

    COUNT=$((${COUNT} + 1))
done

# ▼▼▼▼▼ バッチ使用の場合のＰＧ START ▼▼▼▼▼
##
##---パラメタ定義
##
#
#P1="OPD=,"
#P2="SVCCTL=JBSbatMultiServiceControl,"
#P3="JOB=EO2AI0110J0,"
#P4="IND1=,"
#P5="INF1=,"
#P6="IND2=,"
#P7="INF2=,"
#P8="OTD1=KKIFE167.def,"
#P9="OTF1=${GAIBU_SEND_DIR_KK}/KKL06501/KKL06501_${RSLT_SYSDATE},"
#P10="OTD2=,"
#P11="OTF2=,"
#P12="TABLENAME=KK_T_SVC_KEI,"
#P13="SQLKEY=KK_SELECT_125,"
#P14="SQLPARAM=${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD};${OPE_YMD},"
#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
# ▲▲▲▲▲ バッチ使用の場合のＰＧ E N D ▲▲▲▲▲

exit_rc=$rc

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

exit $exit_rc
