#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：顧客管理
#
# シェル名      ：０５０番号ＩＰ電話情報受信
#
# 機能          ：コンテンツ決済Ｓから050番号IP電話サービスの契約情報を内部IFファイルにて受取り、
#                 CTI電話番号情報(問合せ客)データファイル／件数ファイルの出力処理を行う
#
#   次の処理をシェルで行う（運用日はYYYYMMDDとする）
#   ・シェル起動時の第一引数に 指定した運用年月日が渡されてくれば運用日として使用する
#   ・先行ＪＯＢが出力したファイル「お客様電話番号情報データファイル（KKIFM327001.csv）」の電番区分が
#     「21」の場合は「99」に一括で変更する （電番区分で入力ファイルを区別するため）
#   ・内部連携ファイル「０５０番号ＩＰ電話情報受信（KKIFI034001.csv）」と結合し「KKIFM327002.csv」を作成する。
#     (シェルの第一引数に運用年月日が渡されてきた場合は KKIFI034001_YYYYMMDD.bk と KKIFM327002.csv を結合する)
#   ・結合時にSW顧客ID、サービス契約番号、電番区分を昇順でソートする
#   ・JAVAの処理が正常終了後、０５０番号ＩＰ電話情報受信ファイルを KKIFI034001_YYYYMMDD.bkにリネームする
#     (シェルの第一引数に運用年月日が渡されてきた場合はリネーム処理は行わない）
#   ・最終的な出力ファイルは以下の２つ
#       - ${GAIBU_SEND_DIR_KK}/KKIFE025/TEL_SW_YYYYMMDD.csv
#       - ${GAIBU_SEND_DIR_KK}/KKIFE025/TEL_SW_CNT_YYYYMMDD.csv
#
#    FREEパラメータへ以下の値を渡す
#    ${GAIBU_SEND_DIR_KK}/KKIFE025/TEL_SW_CNT_YYYYMMDD.csv
#
# コマンド形式  ：EO21Y0510J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# 5.00          2013/02/12    FJ)井熊      新規作成
# 8.00          2014/01/15    FJ)鈴木      【ANK-1585-00-00】入力ファイルソート時にソート項目に電話番号を追加。
# v10.00.00     2014/09/02    FJ)山裾      【TAI-2014-0000024】shareファイルを扱う機能間バッチの異常処理の見直し
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
# 2014/09/02 TAI-2014-0000024 Add Start
. EOK010410J0.sh 2
# 2014/09/02 TAI-2014-0000024 Add End

# 先行ジョブ作成ファイル
INPUT_KKIFM327_01=${MID_DIR_KK}/KKIFM327001.csv
INPUT_KKIFM327_02=${MID_DIR_KK}/KKIFM327002.csv
INPUT_TMP=${MID_DIR_KK}/KKIFM327001_TMP.csv

# コンテンツ決済Ｓからの連携ファイル
INPUT_KKIFI034=${SEND_DIR}/KKIFI034001.csv

#-- 運用日付をファイル名につける
if [ "${OPD}" = "" ]; then
   # 通常起動
   . EOK010310J0.sh "BDATE"
   BACKUP_KKIFI034=${SEND_DIR}/KKIFI034001_${RSLT_OPEDATE}.bk
else
   # 運用日指定（リラン）
   RSLT_OPEDATE="${OPD}"
   INPUT_KKIFI034=${SEND_DIR}/KKIFI034001_${RSLT_OPEDATE}.bk
fi

#-- 出力ファイルパス
OUTPUT_DATA_FILE=${GAIBU_SEND_DIR_KK}/KKIFE025/TEL_SW_${RSLT_OPEDATE}.csv
OUTPUT_CNT_FILE=${GAIBU_SEND_DIR_KK}/KKIFE025/TEL_SW_CNT_${RSLT_OPEDATE}.csv
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

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

P1="OPD=,"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO21Y0510J0,"
P4="IND1=KKIFM327.def,"
P5="INF1=${INPUT_KKIFM327_02},"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=KKIFE025.def,"
P9="OTF1=${OUTPUT_DATA_FILE},"
P10="OTD2=,"
P11="OTF2=,"
P12="TABLENAME=,"
P13="SQLKEY=,"
P14="SQLPARAM=,"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
P18="FREE=${OUTPUT_CNT_FILE}"
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

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

#
#-- お客様電話番号情報データファイルの電番区分「21」→「99」へ置換
#
touch $INPUT_TMP
sed s/^\"00\",\"21\"/\"00\",\"99\"/g $INPUT_KKIFM327_01 > $INPUT_TMP

#
#---ＳＯＲＴ
# ソート順：ＳＷ顧客ＩＤ、サービス契約番号、電番区分、電話番号
# 入力ファイル：先行ジョブ作成（KKIFM327）＋ コンテンツ決済Ｓからの連携ファイル（KKIFI034）
#
## 2014.01.15 ANK-1585 mod start
## ソート順に 電話番号を追加。
##bsort -s -z642 -4.12asca,3.12asca,1.4asca -Tflt -t, -o ${INPUT_KKIFM327_02} ${INPUT_TMP} ${INPUT_KKIFI034}
bsort -s -z642 -4.12asca,3.12asca,1.4asca,2.14asca -Tflt -t, -o ${INPUT_KKIFM327_02} ${INPUT_TMP} ${INPUT_KKIFI034}
## 2014.01.15 ANK-1585 mod end

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}
else
    rm -f $INPUT_TMP
fi

#
#---ＡＰＬ起動
#

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
# 2014/09/02 TAI-2014-0000024 Add Start
    cp -p ${INPUT_KKIFI034} ${SEND_DIR}/bk/KKIFI034001_${RSLT_SYSDATE}.bk
# 2014/09/02 TAI-2014-0000024 Add End
else
  #-- 運用日の指定実行でない場合にバックアップ
  if [ "${OPD}" = "" ]; then
    if [ -e ${INPUT_KKIFI034} ]; then
      mv ${INPUT_KKIFI034} ${BACKUP_KKIFI034}
    fi
  fi
fi

#-- 運用日の指定実行（リラン）でない場合のみ
#-- 30日以上経過したバックアップファイルを削除
#
#if [ "${OPD}" = "" ]; then
#  # 30日前の運用年月日を取得
#  . EOK010310J0.sh "BDATE" "DEC" 0 0 30
#  # 削除対象ファイルのパス名を生成
#  DEL_BACKUP_KKIFI034=${SEND_DIR}/KKIFI034001_${RSLT_OPEDATE}.bk
#  # ファイル削除を実行
#  if [ -e ${DEL_BACKUP_KKIFI034} ]; then
#      rm -f ${DEL_BACKUP_KKIFI034}
#  fi
#fi

exit_rc=$rc

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

exit $exit_rc
