#!/bin/sh
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：ｅｏ光電話利用呼情報取込（通話明細登録処理）
#
# 機能          ：eo光電話通話明細より利用呼との重複チェックに必要な情報を抽出する。
#
#エラーの場合、ABENDする。
#
#以下の処理を行う。
#・通話明細との外部結合
#・通話明細との重複レコードチェック
#・登録情報のデータロード
#・更新情報のアップデート
#・初回CDR発生情報出力
#・請求先番号情報出力
#・請求先番号情報（工事報告完了遅延）出力
#
#
# コマンド形式  ：sh EO3080177J0.sh YYYYMMDD
#
# 実行環境      ：.../batch/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v1.00           2013/03/05  FJ）藤田     【ST4-2013-0000050】性能改善
# v4.00           2013/04/09  FJ）藤田     【ST4-2013-0000413】性能改善 CSVマッチングのLEFT JOIN対応
# v4.01           2013/04/19  FJ）狭間     【ST4-2013-0000438】インデックスリビルドのエラー処理不具合を修正
# v4.02           2013/06/26  FJ）藤田     【ST4-2013-0000479】性能改善 nkfの廃止とバックグラウンドジョブのエラーハンドリングの追加
# v5.00           2013/08/09  FJ) 吉田     【IT1-2013-0001571】ログ出力不具合対応
# v20.00          2015/11/27  FJ) 有本     【 OM-2015-0003006】性能改善対応：不要なソート削除
# v22.00          2016/01/14  FJ）有本     【 OM-2016-0000115】性能改善対応：バックグラウンド実行見直し
# v29.00          2017/03/14  FJ) 清原     【OM-2016-0002547】重複呼がチェックエラーとならずに通話明細テーブルがUPDATEされる
###############################################################
. EOK010110J0.sh ;
. EO3080170J0_01.sh
#---ワークファイル削除モード
WK_RM=true

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

SHORI_YMD=$1 ;
#---運用日付取得
if [ "${SHORI_YMD}" = "" ]; then
   . EOK010310J0.sh "BDATE"
else
   RSLT_OPEDATE="${SHORI_YMD}"
fi
SHORI_YMD="${RSLT_OPEDATE}"
#---システム日時取得
. EOK010410J0.sh "1"
SYSDATE=${RSLT_SYSDATE}

LOG_FILE=${SQL_LOADER_LOG_DIR}/${JOBNAME}_${SYSDATE}.log
BAD_FILE=${SQL_LOADER_BAD_DIR}/${JOBNAME}_${SYSDATE}.bad

LOAD_SCHEMA=AC_T_EOH_TEL_TW_DTL

#--システム年月日時分秒取得
. EOK010410J0.sh "2"
SYSTIME=${RSLT_OPEDATE}`echo ${RSLT_SYSDATE} | cut -c 9-`

#---ワークファイル
TMP_FILE_01="${MID_DIR_AC}/TMP_"`basename ${0} ;`"_01" ;
TMP_FILE_02="${MID_DIR_AC}/TMP_"`basename ${0} ;`"_02" ;
touch ${TMP_FILE_01} ${TMP_FILE_02} ;

export ZTLQUOTES=''
#
#--- ジョブの開始メッセージを出力する
#
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

######################################################################
#
#--- 料金スケジュール定義スキーマより請求年月を取得する。
#--- 出力ファイル: ${MID_DIR_AC}/${JOBNAME}_CH0501.csv
#
######################################################################
${UNLOADER} CH_M_PRC_SCHDL_TEIGI ${TMP_FILE_01} ||checkError 'UNLOADER' $? ;
# バッチ運用日に対する請求年月（04）を取得する。
bsortex \
	-record recform=txtcsv \
	-input reclen=290 \
	include="9.1asc.eq.'0'.and.0.2asc.eq.'03'.and.1.8asc.le.'${SHORI_YMD}'" \
	reconst="0.2,1.8,2.6" \
	-sort key="0.2asc,1.8asc" \
 <${TMP_FILE_01} \
 |bsortex \
	-record recform=txtcsv \
	-input reclen=290 \
	-merge key="0.2asc" \
	-summary suppress last \
	-output reconst="2.6" \
 >${MID_DIR_AC}/${JOBNAME}_CH0501.csv ||checkError 'bsort' $? ;
eval SEIKY_YM=`cat ${MID_DIR_AC}/${JOBNAME}_CH0501.csv`
echo SEIKY_YM = ${SEIKY_YM}

######################################################################
#
#- ３．明細内訳と契約呼情報のマッチング
#--- 出力ファイル: ${MID_DIR_AC}/${JOBNAME}_ACIFM194_05.csv
#
######################################################################
sed -e "s%:INF1%${MID_DIR_AC}/ACIFM194001.csv%" ${G_TOOLSH}/util/def/AC_CM_0003.def \
 |sed -e "s%:INF2%${MID_DIR_AC}/ACIFM218001.csv%" >${TMP_FILE_01} ;
ZTLOUTFILE=${TMP_FILE_02} &&export ZTLOUTFILE ;
${MATCHING} ${TMP_FILE_01};
rc=$?
if [ $rc -ne 0 ];
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " MATCHING Error(AC_CM_0003.def MATCHING:rc=$rc) "
    echo $JOBNAME " MATCHING Error(AC_CM_0003.def MATCHING:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

bsortex \
	-copy \
	-record recform=txtcsv \
	-input reclen=45 file=${TMP_FILE_02} \
	-output file=${MID_DIR_AC}/${JOBNAME}_ACIFM194_05.csv reconst="0.END,'0'.1asc";
rc=$?
if [ $rc -ne 0 ];
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsort Error(${JOBNAME}_ACIFM194_05.csv bsort:rc=$rc) "
    echo $JOBNAME " bsort Error(${JOBNAME}_ACIFM194_05.csv bsort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
# OM-2016-0000115 共通UNLOAD対応 2016/01/14 有本 DEL START
#######################################################################
##
##--- 
##- 初回CDR出力処理コール
##--- 
##
#######################################################################
#wait
#(sh EO3080177J0_01.sh ${SHORI_YMD} ${JOBNAME}) &
#pidEO3080177J0_01=$!
#######################################################################
##
##--- 
##- 請求契約情報処理コール
##--- 
##
#######################################################################
#(sh EO3080177J0_02.sh ${SHORI_YMD} ${JOBNAME}) &
#pidEO3080177J0_02=$!
# OM-2016-0000115 共通UNLOAD対応 2016/01/14 有本 DEL END
# OM-2016-0000115 共通UNLOAD対応 2016/01/14 有本 ADD START
wait
# OM-2016-0000115 共通UNLOAD対応 2016/01/14 有本 ADD END
######################################################################
#
#- ４．ローダー対象データの抽出（キーのみ）
#- ５．アップデート対象データの抽出（キーのみ）
#--- 入力ファイル: ${MID_DIR_AC}/${JOBNAME}_ACIFM194_05.csv
#--- 出力ファイル: ${MID_DIR_AC}/${JOBNAME}_ACIFM194_03.csv
#--- 出力ファイル: ${MID_DIR_AC}/${JOBNAME}_ACIFM194_04.csv
#
######################################################################
# OM-2015-0003006 性能改善対応 2015/11/27 有本 MOD START
#bsortex \
#	-record recform=txtflt fldsep=, \
#	-input reclen=45 file=${MID_DIR_AC}/${JOBNAME}_ACIFM194_05.csv \
#	       include="1.1asc.lt.'0'" \
#	-output file=${MID_DIR_AC}/${JOBNAME}_ACIFM194_03.csv case="2.12asc.lt.'0'" \
#	 reconst="0.END,'0'.1asc" \
#	-output file=${MID_DIR_AC}/${JOBNAME}_ACIFM194_04.csv case=other \
#	 reconst="0.END,'1'.1asc" ||checkError 'bsort' $? ;
#bsortex \
#	-record recform=txtflt fldsep=, \
#	-input reclen=45 file=${MID_DIR_AC}/${JOBNAME}_ACIFM194_03.csv,${MID_DIR_AC}/${JOBNAME}_ACIFM194_04.csv \
#	-output file=${MID_DIR_AC}/${JOBNAME}_ACIFM194_02.csv ||checkError 'bsort' $? ;
bsortex \
	-copy \
	-record recform=txtflt fldsep=, \
	-input reclen=45 file=${MID_DIR_AC}/${JOBNAME}_ACIFM194_05.csv \
	       include="1.1asc.lt.'0'" \
	-output file=${MID_DIR_AC}/${JOBNAME}_ACIFM194_03.csv case="2.12asc.lt.'0'" \
	 reconst="0.END,'0'.1asc" \
	-output file=${MID_DIR_AC}/${JOBNAME}_ACIFM194_04.csv case=other \
	 reconst="0.END,'1'.1asc" ||checkError 'bsort' $? ;
bsortex \
	-copy \
	-record recform=txtflt fldsep=, \
	-input reclen=45 file=${MID_DIR_AC}/${JOBNAME}_ACIFM194_03.csv,${MID_DIR_AC}/${JOBNAME}_ACIFM194_04.csv \
	-output file=${MID_DIR_AC}/${JOBNAME}_ACIFM194_02.csv ||checkError 'bsort' $? ;
# OM-2015-0003006 性能改善対応 2015/11/27 有本 MOD END
######################################################################
#
#- ６．更新対象データの作成（インデックス＋データ）
#--- 出力ファイル: ${MID_DIR_AC}/ACIFM182001.csv
#
######################################################################
sed -e "s%:INF1%${MID_DIR_AC}/${JOBNAME}_ACIFM194_02.csv%" ${G_TOOLSH}/util/def/AC_CM_0004.def \
 |sed -e "s%:INF2%${MID_DIR_AC}/ACIFM194001.csv%" >${TMP_FILE_01} ;
ZTLOUTFILE=${MID_DIR_AC}/ACIFM182001.csv &&export ZTLOUTFILE ;
${MATCHING} ${TMP_FILE_01} ||checkError 'MATCHING' $? ;

#
#---パラメタ定義(JBSbatACEOHUseKoInfTrkmUpd)
#
P1="OPD=${OPEDATE},"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO3080177J0,"
P4="IND1=ACIFM182.def,"
P5="INF1=${MID_DIR_AC}/ACIFM182001.csv,"
P6="IND2=,"
P7="INF2=,"
# v29.00 OM-2016-0002547 MOD START
#P8="OTD1=,"
#P9="OTF1=,"
P8="OTD1=ACIFM157.def,"
P9="OTF1=${MID_DIR_AC}/ACIFM157003.csv,"
# v29.00 OM-2016-0002547 MOD END
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) &
pidJAVAMOD=$!

exit_rc=0
# OM-2016-0000115 共通UNLOAD対応 2016/01/14 有本 DEL START
## 初回ＣＤＲ発生情報抽出の待ち
#wait ${pidEO3080177J0_01}
# OM-2016-0000115 共通UNLOAD対応 2016/01/14 有本 DEL END
# OM-2016-0000115 共通UNLOAD対応 2016/01/14 有本 ADD START
######################################################################
#
#--- 
#- 初回CDR出力処理コール
#--- 
#
######################################################################
sh EO3080177J0_01.sh ${SHORI_YMD} ${JOBNAME}
# OM-2016-0000115 共通UNLOAD対応 2016/01/14 有本 ADD END
rc=$?
if [ $rc -ne 0 ]
then
	sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " PROGRAM Error($SVC EO3080177J0_01:rc=$rc) "
	echo $JOBNAME " PROGRAM Error($SVC EO3080177J0_01:rc=$rc) "
	exit_rc=$rc
fi

# OM-2016-0000115 共通UNLOAD対応 2016/01/14 有本 DEL START
## 請求先番号情報抽出の待ち
#wait ${pidEO3080177J0_02}
# OM-2016-0000115 共通UNLOAD対応 2016/01/14 有本 DEL END
# OM-2016-0000115 共通UNLOAD対応 2016/01/14 有本 ADD START
######################################################################
#
#--- 
#- 請求契約情報処理コール
#--- 
#
######################################################################
sh EO3080177J0_02.sh ${SHORI_YMD} ${JOBNAME}
# OM-2016-0000115 共通UNLOAD対応 2016/01/14 有本 ADD END
rc=$?
if [ $rc -ne 0 ]
then
	sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " PROGRAM Error($SVC EO3080177J0_02:rc=$rc) "
	echo $JOBNAME " PROGRAM Error($SVC EO3080177J0_02:rc=$rc) "
	exit_rc=$rc
fi

# Javaアプリケーションの待ち
wait ${pidJAVAMOD}
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
java_rc=$rc

if [ ${exit_rc} -eq 0 ]
then
    exit_rc=$java_rc
fi

#-ワーク削除
if [ ${WK_RM} = "true" ]
then
    rm -f ${TMP_FILE_01}
    rm -f ${TMP_FILE_02}
    rm -f ${MID_DIR_AC}/${JOBNAME}_ACIFM194_05.csv
    rm -f ${MID_DIR_AC}/${JOBNAME}_ACIFM194_03.csv
    rm -f ${MID_DIR_AC}/${JOBNAME}_ACIFM194_04.csv
    rm -f ${MID_DIR_AC}/${JOBNAME}_ACIFM194_02.csv
    rm -f ${MID_DIR_AC}/${JOBNAME}_CH0501.csv
fi

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

exit ${exit_rc}
