#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：機器報編集
#
# 機能          ：KKPRC67201　高度化システム向け契約データ作成
#                 STB情報とV-ONU情報を取得する。
#
# コマンド形式  ：EO2IO0180J0.sh
#
# 実行環境      ：.../app/shl
# パラメタ      ：$1   運用日付
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v68.00.00       2023/11/22  FJ)北谷    ANK-4485-00-00_高度化システム向け契約データ連携　新規作成
# v68.00.01       2023/12/04  FJ)北谷    ANK-4485-00-00 IT1-2023-0000073
##############################################################

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

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

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



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

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

#
#--- OPD
#
OPD=$1

#
#--- 業務で必要な変数定義
#
#--ワークファイル削除フラグ
WK_RM=true

#---マッチング処理でLeftjoinがNULL時に"を付けなくする（マッチング使用時は必須）
export ZTLQUOTES=''

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

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

#--- MATCHING関数
#    p1：defファイル名 p2:出力ファイル名
MATCHING(){
    export ZTLOUTFILE=$2
    ${G_TOOLSH}/util/bin/ZTLMAT01 $1
    rc=$?
    if [ $rc -ne 0 ]
    then
          sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " matching error(matching:$1=$rc) "
          echo $JOBNAME " matching error(matching:$1=$rc) "
          exit ${G_RTN_ERROR}
    fi
}

#-------------------------------------------------------------
#--- 入出力ファイル定義
#-------------------------------------------------------------

#--サービス契約内訳情報編集結果
INPUT_FILE_1=${MID_DIR_KK}/KKIFM960061.csv
#--機器提供サービス契約
INPUT_FILE_2=${MID_DIR_CC}/CCIFM025002.csv
#--回線情報編集結果
INPUT_FILE_3=${MID_DIR_KK}/KKIFM960051.csv
#--宅内機器型式
INPUT_FILE_4=${MID_DIR_KK}/KKIFM960004.csv

#--機器報編集結果（STB抽出情報）
OUTPUT_FILE_1=${MID_DIR_KK}/KKIFM960081.csv
#--機器報編集結果（STB台数）
OUTPUT_FILE_2=${MID_DIR_KK}/KKIFM960082.csv
#--機器報編集結果（BSPT情報）
OUTPUT_FILE_3=${MID_DIR_KK}/KKIFM960083.csv

#--マッチングDEF
DEF_FILE_771=${G_TOOLSH}/util/def/KK_CM_0771.def
DEF_FILE_772=${G_TOOLSH}/util/def/KK_CM_0772.def


#
#---ファイルの存在チェック
#

if [ ! -r ${INPUT_FILE_1} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${INPUT_FILE_1}) "
    echo $JOBNAME " File is nonexist($INPUT_FILE_1) "
    exit ${G_RTN_ERROR}
fi
if [ ! -r ${INPUT_FILE_2} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${INPUT_FILE_2}) "
    echo $JOBNAME " File is nonexist($INPUT_FILE_2) "
    exit ${G_RTN_ERROR}
fi
if [ ! -r ${INPUT_FILE_3} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${INPUT_FILE_3}) "
    echo $JOBNAME " File is nonexist($INPUT_FILE_3) "
    exit ${G_RTN_ERROR}
fi
if [ ! -r ${INPUT_FILE_4} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${INPUT_FILE_4}) "
    echo $JOBNAME " File is nonexist($INPUT_FILE_4) "
    exit ${G_RTN_ERROR}
fi


#
#---出力ファイルの初期化
#
cat /dev/null > ${OUTPUT_FILE_1}
cat /dev/null > ${OUTPUT_FILE_2}
cat /dev/null > ${OUTPUT_FILE_3}


#-------------------------------------------------------------
#--- ワークファイル定義
#-------------------------------------------------------------

DEF_FILE_771_WK=${G_TOOLSH}/util/def/KK_CM_0771_${JOBNAME}_WK.def
DEF_FILE_772_WK=${G_TOOLSH}/util/def/KK_CM_0772_${JOBNAME}_WK.def
INPUT_FILE_2_WK=${MID_DIR_CC}/${JOBNAME}_CCIFM025002_WK.csv

OUTPUT_FILE_WK1=${MID_DIR_KK}/KKIFM960081_${JOBNAME}_WK1.csv
OUTPUT_FILE_WK2=${MID_DIR_KK}/KKIFM960083_${JOBNAME}_WK2.csv
OUTPUT_FILE_WK3=${MID_DIR_KK}/KKIFM960083_${JOBNAME}_WK3.csv
OUTPUT_FILE_WK4=${MID_DIR_KK}/KKIFM960083_${JOBNAME}_WK4.csv
OUTPUT_FILE_WK5=${MID_DIR_KK}/KKIFM960083_${JOBNAME}_WK5.csv

#-------------------------------------------------------------
#--- ＭＡＩＮ処理
#-------------------------------------------------------------

#--- ダブルクォート削除
sed -e "s/\"//g" ${INPUT_FILE_2} > ${INPUT_FILE_2_WK}

#STBを取り出す。機器提供サービス契約、サービス契約内訳情報編集結果を結合

cp -f ${DEF_FILE_771} ${DEF_FILE_771_WK}
sed -i -e "s%:SVKEIUW%${INPUT_FILE_1}%" ${DEF_FILE_771_WK}
sed -i -e "s%:KKTKKEI%${INPUT_FILE_2_WK}%" ${DEF_FILE_771_WK}

MATCHING ${DEF_FILE_771_WK} ${OUTPUT_FILE_1}


#有効なSTBの台数をサービス契約番号単位にカウントする
bsortex \
    -sort key="0.10asc" \
    -record recform=txtcsv \
    -input file=${OUTPUT_FILE_1} \
        reclen=200 \
        include="4.3asc.eq.'100'.or.4.3asc.eq.'210'.or.4.3asc.eq.'220'" \
    -output file=${OUTPUT_FILE_WK1} reconst="0.10,'1'.1asc"

bsortex \
    -sort key="0.10asc" \
    -record recform=txtcsv \
    -input file=${OUTPUT_FILE_WK1} \
        reclen=200 \
    -summary field="1.12ascd" \
    -output file=${OUTPUT_FILE_2} 
#IT1-2023-0000073 集約フィールドの桁数を修正

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


#V-ONUを取り出す。機器提供サービス契約、回線情報編集結果、宅内機器型式を結合

cp -f ${DEF_FILE_772} ${DEF_FILE_772_WK}
sed -i -e "s%:KAISEN%${INPUT_FILE_3}%" ${DEF_FILE_772_WK}
sed -i -e "s%:KKTKKEI%${INPUT_FILE_2_WK}%" ${DEF_FILE_772_WK}
sed -i -e "s%:TKMODEL%${INPUT_FILE_4}%" ${DEF_FILE_772_WK}

MATCHING ${DEF_FILE_772_WK} ${OUTPUT_FILE_WK2}


#機器提供サービス契約ステータス毎に優先度を付与する

awk -F, -v OFS=, '{if ($5 == "100") $6=9 ; else if ($5 == "110") $6=8 ; else if ($5 == "210") $6=7 ; else if ($5 == "220") $6=6 ; else if ($5 == "030") $6=5 ; else if ($5 == "020") $6=4 ; \
 else if ($5 == "010") $6=3 ; else if ($5 == "910") $6=2 ; else $6=1 ; print $0 }' ${OUTPUT_FILE_WK2} > ${OUTPUT_FILE_WK3}

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

#[回線内訳使用終了年月日]＋[優先度]＋[機器提供サービス契約番号]　が最大の物を取得
bsortex \
    -sort key="0.10asc,1.8asc,5.1asc,2.12asc" \
    -record recform=txtcsv \
    -input file=${OUTPUT_FILE_WK3} \
        reclen=200 \
    -output file=${OUTPUT_FILE_WK4} 

bsortex \
    -sort key="0.10asc" \
    -record recform=txtcsv \
    -input file=${OUTPUT_FILE_WK4} \
        reclen=200 \
    -summary suppress last \
    -output file=${OUTPUT_FILE_WK5} 

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


#VONUBSパススルー可否を名称に変換する
ARI=`echo '有' | iconv -f UTF-8 -t SHIFT_JIS`
NASI=`echo '無' | iconv -f UTF-8 -t SHIFT_JIS`
awk -F, -v OFS=, -v ari=${ARI} -v nasi=${NASI} '{if ($4 == "0") $4=nasi ; else $4=ari ; print $0 }' ${OUTPUT_FILE_WK5} > ${OUTPUT_FILE_3}

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


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

#-------------------------------------------------------------
#---ワークファイル削除
#-------------------------------------------------------------
if [ ${WK_RM} = "true" ]
then
    rm -f ${DEF_FILE_771_WK}
    rm -f ${DEF_FILE_772_WK}
    rm -f ${INPUT_FILE_2_WK}
    rm -f ${OUTPUT_FILE_WK1}
    rm -f ${OUTPUT_FILE_WK2}
    rm -f ${OUTPUT_FILE_WK3}
    rm -f ${OUTPUT_FILE_WK4}
    rm -f ${OUTPUT_FILE_WK5}
fi

exit $exit_rc
