#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：卸先事業者工事結果ＮＧ情報抽出
#
# 機能          ：設備卸契約者が保持するネット、電話、テレビ契約のいずれかが、工事ＮＧ、または、工事取消となった契約を抽出し、「ＮＧ情報連携（全卸先事業者）」に追記する。
#
# コマンド形式  ：EO2GW0120J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v37.00.00       2018/02/06  FJ)謝        【ANK-3366-00-00】eo光設備卸対応 新規作成
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

#
#---業務で必要な変数定義
#
#xxx=xxxxxxx
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

#
#--- クエリ編集(マッチング)
#       p1：ＳＱＬ定義ファイル名
#       p2：バインド変数置換文字
EDIT_MATCHING_QUERY()
{
    MATCHING_FILE=$1
    MATCHING_QUERY_WORK=${ULD_WORK_DIR}/${JOBNAME}_MATCH_QUERY.tmp

    cat /dev/null > ${MATCHING_QUERY_WORK}

    # SQL定義ファイルの編集
    if [ ! -r ${MATCHING_FILE} ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${MATCHING_FILE}:rc=$rc) "
        echo $JOBNAME " File is nonexist(${MATCHING_FILE}:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi

    # バインド変数を置き換える
    cat ${MATCHING_FILE} > ${MATCHING_QUERY_WORK}

    for bind in $2
    do
        bind_escape=`echo $bind | sed "s/\//\\\\\\\\\//g"`
        sed -i, -e 0,/#FILE#/s/#FILE#/$bind_escape/ ${MATCHING_QUERY_WORK}
    done

    export MATCHING_QUERY_WORK
}

#
#--- クエリ編集(アンロード)
#       p1：ＳＱＬ定義ファイル名
#       p2：バインド変数置換文字
EDIT_ULD_QUERY()
{
    SQL_FILE=$1
    SQL_WORK_FILE=${ULD_WORK_DIR}/${JOBNAME}_QUERY.tmp
    cat /dev/null > ${SQL_WORK_FILE}

    # SQL定義ファイルの編集
    if [ ! -r ${SQL_FILE} ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${SQL_FILE}:rc=$rc) "
        echo $JOBNAME " File is nonexist(${SQL_FILE}:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi

    # バインド変数を置き換える
    cat ${SQL_FILE} > ${SQL_WORK_FILE}

    for bind in $2
    do
        sed -i, -e 0,/?/s/?/"'"$bind"'"/ ${SQL_WORK_FILE}
    done

    export SQL_WORK_FILE
}

#
#--- マッチング処理
#      p1：出力ファイルパス
#      p2：マッチングクエリファイルパス
EXEC_MATCHING()
{
    # 出力ファイルの初期化
    OUTFILE=$1
    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

    # マッチング実行
    export ZTLOUTFILE=${OUTFILE}
    ${G_TOOLSH}/util/bin/ZTLMAT01 $2
    rc=$?
    if [ $rc -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " matching error($2:rc=$rc) "
        echo $JOBNAME " matching error($2:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi
}

#
#--- アンロード関数
#       p1：テーブル名／クエリファイル名
#       p2：出力ファイル名
EXEC_UNLOAD()
{
    # 出力ファイルの初期化
    cat /dev/null > $2
    rc=$?
    if [ $rc -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($2:rc=$rc) "
        echo $JOBNAME " File cat error($2:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi

    # unload
    sh ${G_TOOLSH}/EOKULD02.sh $1 $2

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

#
#--- 文字コード変換(Shift_JIS → UTF-8)
#       p1：対象ファイル名
EXEC_TO_UTF8()
{
    if [ `nkf -g $1` == 'Shift_JIS' ]
    then
        nkf -x -w --overwrite $1
    fi
}

#
#--- ファイル定義
#
# 工事案件(全件)
COMULD2_KU0011_ALL=${MID_DIR_CC}/CCIFM034001.csv
# サービス契約_工事案件(全件)
COMULD2_KU0081_ALL=${MID_DIR_CC}/CCIFM035001.csv
# サービス契約(カレント)
COMULD2_KK0081_CUR=${MID_DIR_CC}/CCIFM020002.csv
# 設備卸のお客様
FILE_CK0011_EQUIP_OROSI=${MID_DIR_KK}/CK0011_EQUIP_OROSI.csv
# 対象の卸先事業者契約異動通知
FILE_KK3141_TRGT=${MID_DIR_KK}/EO2GW010_KK3141_TRGT.csv
# 工事ＮＧの工事案件
FILE_KU0011_KOJI_NG=${MID_DIR_KK}/KU0011_KOJI_NG.csv
# 卸先事業者工事ＮＧ情報
FILE_ORSJGS_KOJI_NG=${MID_DIR_KK}/ORSJGS_KOJI_NG.csv
# 工事取消の工事案件
FILE_KU0011_KOJI_CL=${MID_DIR_KK}/KU0011_KOJI_CL.csv
# 卸先事業者工事取消情報
FILE_ORSJGS_KOJI_CL=${MID_DIR_KK}/ORSJGS_KOJI_CL.csv
# ＮＧ情報連携(全卸先事業者)
FILE_KKIFM783=${MID_DIR_KK}/KKIFM783.csv
# ＮＧ情報連携(全卸先事業者)(工事ＮＧ)(ネット)(光ファイバールート設計ＮＧ)
FILE_KKIFM783011=${MID_DIR_KK}/KKIFM783011.csv
# ＮＧ情報連携(全卸先事業者)(工事ＮＧ)(ネット)(宅内調査ＮＧ)
FILE_KKIFM783012=${MID_DIR_KK}/KKIFM783012.csv
# ＮＧ情報連携(全卸先事業者)(工事ＮＧ)(電話)(光ファイバールート設計ＮＧ)
FILE_KKIFM783013=${MID_DIR_KK}/KKIFM783013.csv
# ＮＧ情報連携(全卸先事業者)(工事ＮＧ)(電話)(宅内調査ＮＧ)
FILE_KKIFM783014=${MID_DIR_KK}/KKIFM783014.csv
# ＮＧ情報連携(全卸先事業者)(工事ＮＧ)(テレビ)(光ファイバールート設計ＮＧ)
FILE_KKIFM783015=${MID_DIR_KK}/KKIFM783015.csv
# ＮＧ情報連携(全卸先事業者)(工事ＮＧ)(テレビ)(宅内調査ＮＧ)
FILE_KKIFM783016=${MID_DIR_KK}/KKIFM783016.csv
# ＮＧ情報連携(全卸先事業者)(工事取消)(ネット)
FILE_KKIFM783017=${MID_DIR_KK}/KKIFM783017.csv
# ＮＧ情報連携(全卸先事業者)(工事取消)(電話)
FILE_KKIFM783018=${MID_DIR_KK}/KKIFM783018.csv
# ＮＧ情報連携(全卸先事業者)(工事取消)(テレビ)
FILE_KKIFM783019=${MID_DIR_KK}/KKIFM783019.csv
# 対象のコード名称管理
FILE_ZM0171_CD01455=${MID_DIR_KK}/ZM0171_CD01455.csv
# 対象の他事業者割引コード変換
FILE_KK2471_TRGT=${MID_DIR_KK}/KK2471_TRGT.csv
# サービス契約(ネット)
FILE_KK0081_NET=${MID_DIR_KK}/EO2GW010_KK0081_NET.csv
# マッチングファイル定義
DEFFILE_KK_CM_0646=${G_TOOLSH}/util/def/KK_CM_0646.def
DEFFILE_KK_CM_0647=${G_TOOLSH}/util/def/KK_CM_0647.def
# アンロードSQL定義
SQLFILE_KK_U_ZM0171_10=${SQL_DIR}/KK_U_ZM0171_10.sql
SQLFILE_KK_U_KK2471_01=${SQL_DIR}/KK_U_KK2471_01.sql

#
#--- 工事ＮＧの工事案件を取得する
#    KU0011の全件 AND 工事案件種別コード = 「新設：001」
#        AND (工事受付契機異動区分 = 「新規契約：00001」
#            OR 工事受付契機異動区分 = 「サービス追加：00002」)
#        AND 最終応答結果コード = 「工事NG：2」
#        AND 最終応答結果コード変更年月日 = バッチ運用日付
#        AND (宅内調査判定コード = 「NG：2」
#            OR 設計結果コード = 「基準外：2」)
#    - SELECT(reconst)項目は以下
#        0 - 0.10   ：工事案件番号
#        1 - 19.10  ：SYSID
#        2 - 14.1   ：宅内調査判定コード
#        3 - 15.1   ：設計結果コード
bsortex \
    -copy -record recform=txtcsv \
    -input file=${COMULD2_KU0011_ALL} \
        reclen=${ULD2_REC_LEN_KU0011} \
        reconst="0.10,19.10,14.1,15.1" \
        include="2.3asc.eq.'001'.and.(12.5asc.eq.'00001'.or.12.5asc.eq.'00002').and.7.1asc.eq.'2'.and.13.8asc.eq.'${OPD}'.and.(14.1asc.eq.'2'.or.15.1asc.eq.'2')" \
    -output file=${FILE_KU0011_KOJI_NG}

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

#
#--- 設備卸のお客様に紐付く工事ＮＧを取得する(マッチング)
#        工事ＮＧの工事案件.SYSID = 設備卸のお客様.SYSID
#        AND サービス契約＿工事案件.工事案件番号 = 工事ＮＧの工事案件.工事案件番号
#        AND サービス契約(カレント).サービス契約番号 = サービス契約＿工事案件.サービス契約番号
#        AND 卸先事業者契約異動通知.卸先事業者コード = 設備卸のお客様.卸先事業者コード
#        AND 卸先事業者契約異動通知.サービス契約番号 = サービス契約(カレント).サービス契約番号
#        AND サービス契約(ネット).サービス契約番号 = サービス契約(カレント).サービス契約番号
EDIT_MATCHING_QUERY ${DEFFILE_KK_CM_0646} "${FILE_CK0011_EQUIP_OROSI} ${FILE_KU0011_KOJI_NG} ${COMULD2_KU0081_ALL} ${COMULD2_KK0081_CUR} ${FILE_KK3141_TRGT} ${FILE_KK0081_NET}"
EXEC_MATCHING ${FILE_ORSJGS_KOJI_NG} ${MATCHING_QUERY_WORK}

#
#--- ＮＧ情報連携(全卸先事業者)を出力する
#    case1:料金グループコード = 「ｅｏ光ネットホームタイプ：02」 AND 設計結果コード =  「基準外：2」
#    case2:料金グループコード = 「ｅｏ光ネットホームタイプ：02」 AND 設計結果コード <> 「基準外：2」 AND 宅内調査判定コード = 「NG：2」
#    case3:料金グループコード = 「ｅｏ光電話：10」 AND 設計結果コード =  「基準外：2」
#    case4:料金グループコード = 「ｅｏ光電話：10」 AND 設計結果コード <> 「基準外：2」 AND 宅内調査判定コード = 「NG：2」
#    case5:料金グループコード = 「ｅｏ光テレビ：11」 OR 「ｅｏ光テレビ(再送信)：13」 AND 設計結果コード =  「基準外：2」
#    case6:料金グループコード = 「ｅｏ光テレビ：11」 OR 「ｅｏ光テレビ(再送信)：13」 AND 設計結果コード <> 「基準外：2」 AND 宅内調査判定コード = 「NG：2」
bsortex \
    -copy -record recform=txtcsv \
    -input file=${FILE_ORSJGS_KOJI_NG} \
        reclen=44 \
    -output file=${FILE_KKIFM783011} case="4.2asc.eq.'02'.and.2.1asc.eq.'2'" \
        reconst="0.2,3.10,'1'.1ascA,EMPTYA,'光ファイバールート設計ＮＧ'.39ascA" \
    -output file=${FILE_KKIFM783012} case="4.2asc.eq.'02'.and.2.1asc.ne.'2'.and.1.1asc.eq.'2'" \
        reconst="0.2,3.10,'1'.1ascA,EMPTYA,'宅内調査ＮＧ'.18ascA" \
    -output file=${FILE_KKIFM783013} case="4.2asc.eq.'10'.and.2.1asc.eq.'2'" \
        reconst="0.2,3.10,'2'.1ascA,5.10,'光ファイバールート設計ＮＧ'.39ascA" \
    -output file=${FILE_KKIFM783014} case="4.2asc.eq.'10'.and.2.1asc.ne.'2'.and.1.1asc.eq.'2'" \
        reconst="0.2,3.10,'2'.1ascA,5.10,'宅内調査ＮＧ'.18ascA" \
    -output file=${FILE_KKIFM783015} case="(4.2asc.eq.'11'.or.4.2asc.eq.'13').and.2.1asc.eq.'2'" \
        reconst="0.2,3.10,'3'.1ascA,5.10,'光ファイバールート設計ＮＧ'.39ascA"\
    -output file=${FILE_KKIFM783016} case="(4.2asc.eq.'11'.or.4.2asc.eq.'13').and.2.1asc.ne.'2'.and.1.1asc.eq.'2'" \
        reconst="0.2,3.10,'3'.1ascA,5.10,'宅内調査ＮＧ'.18ascA"

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

#
#--- ＮＧ情報連携(全卸先事業者)を追記する
#
EXEC_TO_UTF8 ${FILE_KKIFM783011}
EXEC_TO_UTF8 ${FILE_KKIFM783012}
EXEC_TO_UTF8 ${FILE_KKIFM783013}
EXEC_TO_UTF8 ${FILE_KKIFM783014}
EXEC_TO_UTF8 ${FILE_KKIFM783015}
EXEC_TO_UTF8 ${FILE_KKIFM783016}
cat ${FILE_KKIFM783011} >> ${FILE_KKIFM783}
cat ${FILE_KKIFM783012} >> ${FILE_KKIFM783}
cat ${FILE_KKIFM783013} >> ${FILE_KKIFM783}
cat ${FILE_KKIFM783014} >> ${FILE_KKIFM783}
cat ${FILE_KKIFM783015} >> ${FILE_KKIFM783}
cat ${FILE_KKIFM783016} >> ${FILE_KKIFM783}

#
#--- 対象のコード名称管理を取得する(アンロード)
#
EDIT_ULD_QUERY ${SQLFILE_KK_U_ZM0171_10} "${OPD} ${OPD}"
EXEC_UNLOAD ${SQL_WORK_FILE} ${FILE_ZM0171_CD01455}

#
#--- 対象の他事業者割引コード変換を取得する(アンロード)
#
EDIT_ULD_QUERY ${SQLFILE_KK_U_KK2471_01} "${OPD} ${OPD}"
EXEC_UNLOAD ${SQL_WORK_FILE} ${FILE_KK2471_TRGT}

#
#--- 工事取消(ＫＯＰＴ都合)の工事案件を取得する
#    KU0011の全件 AND 工事案件種別コード = 「新設：001」
#        AND (工事受付契機異動区分 = 「新規契約：00001」
#            OR 工事受付契機異動区分 = 「サービス追加：00002」)
#        AND 工事案件ステータス = 「中止：900」
#        AND 最終応答結果コード変更年月日 = バッチ運用日付
#    - SELECT(reconst)項目は以下
#        0 - 0.10   ：工事案件番号
#        1 - 19.10  ：SYSID
#        2 - 16.2   ：工事案件中止理由コード1
#        3 - 17.3   ：工事案件中止理由コード2
bsortex \
    -copy -record recform=txtcsv \
    -input file=${COMULD2_KU0011_ALL} \
        reclen=${ULD2_REC_LEN_KU0011} \
        reconst="0.10,19.10,16.2,17.3" \
        include="2.3asc.eq.'001'.and.(12.5asc.eq.'00001'.or.12.5asc.eq.'00002').and.1.3asc.eq.'900'.and.13.8asc.eq.'${OPD}'" \
    -output file=${FILE_KU0011_KOJI_CL}

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

#
#--- 設備卸のお客様に紐付く工事取消(ＫＯＰＴ都合)を取得する(マッチング)
#        工事取消の工事案件.SYSID = 設備卸のお客様.SYSID
#        AND サービス契約＿工事案件.工事案件番号 = 工事取消の工事案件.工事案件番号
#        AND 他事業者割引コード変換.工事案件中止理由コード1 = 工事取消の工事案件.工事案件中止理由コード1
#        AND 他事業者割引コード変換.工事案件中止理由コード2 = 工事取消の工事案件.工事案件中止理由コード2
#        AND サービス契約(カレント).サービス契約番号 = サービス契約＿工事案件.サービス契約番号
#        AND 卸先事業者契約異動通知.卸先事業者コード = 設備卸のお客様.卸先事業者コード
#        AND 卸先事業者契約異動通知.サービス契約番号 = サービス契約(カレント).サービス契約番号
#        AND コード名称管理.コード区分 = 工事取消の工事案件.工事案件中止理由コード2
#        AND サービス契約(ネット).サービス契約番号 = サービス契約(カレント).サービス契約番号
EDIT_MATCHING_QUERY ${DEFFILE_KK_CM_0647} "${FILE_CK0011_EQUIP_OROSI} ${FILE_KU0011_KOJI_CL} ${COMULD2_KU0081_ALL} ${FILE_KK2471_TRGT} ${COMULD2_KK0081_CUR} ${FILE_KK3141_TRGT} ${FILE_ZM0171_CD01455} ${FILE_KK0081_NET}"
EXEC_MATCHING ${FILE_ORSJGS_KOJI_CL} ${MATCHING_QUERY_WORK}

#
#--- ＮＧ情報連携(全卸先事業者)を出力する
#    case1:料金グループコード = 「ｅｏ光ネットホームタイプ：02」
#    case2:料金グループコード = 「ｅｏ光電話：10」
#    case3:料金グループコード = 「ｅｏ光テレビ：11」 OR 「ｅｏ光テレビ(再送信)：13」
bsortex \
    -copy -record recform=txtcsv \
    -input file=${FILE_ORSJGS_KOJI_CL} \
        reclen=139 \
    -output file=${FILE_KKIFM783017} case="3.2asc.eq.'02'" \
        reconst="0.2,2.10,'1'.1ascA,EMPTYA,1.100" \
    -output file=${FILE_KKIFM783018} case="3.2asc.eq.'10'" \
        reconst="0.2,2.10,'2'.1ascA,4.10,1.100" \
    -output file=${FILE_KKIFM783019} case="3.2asc.eq.'11'.or.3.2asc.eq.'13'" \
        reconst="0.2,2.10,'3'.1ascA,4.10,1.100"

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

#
#--- ＮＧ情報連携(全卸先事業者)を追記する
#
EXEC_TO_UTF8 ${FILE_KKIFM783017}
EXEC_TO_UTF8 ${FILE_KKIFM783018}
EXEC_TO_UTF8 ${FILE_KKIFM783019}
cat ${FILE_KKIFM783017} >> ${FILE_KKIFM783}
cat ${FILE_KKIFM783018} >> ${FILE_KKIFM783}
cat ${FILE_KKIFM783019} >> ${FILE_KKIFM783}

#
#--- 一時ファイルの削除を行う
#
rm -f ${FILE_CK0011_EQUIP_OROSI}
rm -f ${FILE_KU0011_KOJI_NG}
rm -f ${FILE_ORSJGS_KOJI_NG}
rm -f ${FILE_ZM0171_CD01455}
rm -f ${FILE_KK2471_TRGT}
rm -f ${FILE_KU0011_KOJI_CL}
rm -f ${FILE_ORSJGS_KOJI_CL}
rm -f ${FILE_KK3141_TRGT}
rm -f ${FILE_KK0081_NET}
rm -f ${FILE_KKIFM783011}
rm -f ${FILE_KKIFM783012}
rm -f ${FILE_KKIFM783013}
rm -f ${FILE_KKIFM783014}
rm -f ${FILE_KKIFM783015}
rm -f ${FILE_KKIFM783016}
rm -f ${FILE_KKIFM783017}
rm -f ${FILE_KKIFM783018}
rm -f ${FILE_KKIFM783019}

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

exit ${G_RTN_NORMAL}
