#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：NTT卸単独請求抽出
#
# 機能          ：1. NTT卸単独請求抽出
#
#当月請求書印刷対象の請求先の請求内訳(合計明細)を参照し、NTT卸単独請求だった場合、NTT卸問合せ先印刷対象として、NTT卸問合せ先印刷対象請求先情報を作成する。
#
# コマンド形式  ：EO62A0610J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v73.00         2024/11/11   FJ) 張    【ANK-4427-00-00】NTT卸対応：STEP1
# v73.01         2025/01/27   FJ) 張    【ST-2025-0000004】NTT卸対応：STEP1_性能障害
# v73.02         2025/03/13   FJ) 張    【#86808】NTT卸対応：STEP1_NHK単独請求改修
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#---日中運用日付取得

if [ "${OPD}" = "" -o "${OPD}" = "20991231" ]; then
   . EOK010310J0.sh "BDATE"
else
   RSLT_OPEDATE=${OPD}
fi

#ST-2025-0000004 張 ADD START
#
#---ワークファイル削除モード
#
WK_RM=true
#ST-2025-0000004 張 ADD END

#
#---業務で必要な変数定義
#

#ST-2025-0000004 張 ADD START
#
#--- アンロードSQL定義ファイル

# 料金項目抽出変換(CH_M_PRC_KMK_CS_CHGE)NTT卸単独定義抽出
SQL_FILE_CH_U_CH0401_27=${SQL_DIR}/CH_U_CH0401_27.sql
SQL_FILE_CH_U_CH0401_27_TEMP=${SQL_DIR}/CH_U_CH0401_27_TMP.sql
#
#--- 一時ファイル
# ファイル（ 料金項目抽出変換NTT卸単独定義抽出）
TMP_CH_U_CH0401_27=${MID_DIR_CH}/${JOBNAME}_TMP_CH_U_CH0401_27.csv
TMP_CH_U_CH0401_27_TEMP=${MID_DIR_CH}/${JOBNAME}_TMP_CH_U_CH0401_27_TMP.csv

#
#--- マッチングツール定義ファイル
#
MATCHDEFFILE1=${G_TOOLSH}/util/def/CH_CM_0302.def

MATCHDEFFILE2=${G_TOOLSH}/util/def/CH_CM_0303.def

#86808 20250312 張 ADD START
MATCHDEFFILE3=${G_TOOLSH}/util/def/CH_CM_0305.def
#86808 20250312 張 ADD END

#
#--- # マッチング結果ファイル
#
MATCHING_FILE1=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_01.csv

MATCHING_FILE2=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_02.csv

MATCHING_FILE3=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_03.csv

MATCHING_FILE4=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_04.csv

MATCHING_FILE5=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_05.csv

#86808 20250312 張 ADD START
MATCHING_FILE6=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_06.csv

MATCHING_FILE7=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_07.csv
#86808 20250312 張 ADD END

MATCHING_FILE1_OUT=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_01_out.csv

MATCHING_FILE2_OUT=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_02_out.csv

MATCHING_FILE1_OUT_SORT=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_01_out_sort.csv

MATCHING_FILE2_OUT_SORT=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_02_out_sort.csv

MATCHING_NTTO=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_out1.csv

#86808 20250312 張 ADD START
MATCHING_NTTO1=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_out1_1.csv
#86808 20250312 張 ADD END

MATCHING_NOT_NTTO=${MID_DIR_CH}/${JOBNAME}_CHIFM458001_out2.csv

MATCH_OUT=${MID_DIR_CH}/${JOBNAME}.MATCH_TMP.csv

#
#--- ファイル定義
#
#--INファイル
INFILE_NTTO1=${MID_DIR_CH}/CHIFM460001.csv
INFILE_NTTO2=${MID_DIR_CH}/CHIFM461001.csv

# 出力ファイル
OUT_FILE=${MID_DIR_CH}/CHIFM458001.csv
OUTFILE_ALL=${MID_DIR_CH}/CHIFM458002.csv
OUT_FILE_SORT=${MID_DIR_CH}/CHIFM458003.csv
#86808 20250312 張 ADD START
OUT_FILE_TMP=${MID_DIR_CH}/CHIFM458001_TMP.csv
#86808 20250312 張 ADD END
##############################################################
# 共通関数
##############################################################

#
#--- クエリ編集
#       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,/#STRVAL#/s/#STRVAL#/$bind_escape/ ${MATCHING_QUERY_WORK}
	done
	
	export MATCHING_QUERY_WORK
}

#
#--- マッチング処理
#      p1：出力ファイルパス
#      p2：マッチングクエリファイルパス
EXEC_MATCHING()
{
	# 出力ファイルの初期化
	OUTFILE=$1
	QUERY_FILE=$2
	
	cat /dev/null > ${OUTFILE}
	
	rc=$?
	PRC_ERR $rc " File cat error(${OUTFILE}:rc=$rc) "

	# マッチング実行
	export ZTLOUTFILE=${OUTFILE}
	${G_TOOLSH}/util/bin/ZTLMAT01 ${QUERY_FILE}
	
	rc=$?
	PRC_ERR $rc "matching error(${QUERY_FILE}:rc=$rc)"
}

#
#-- エラー処理
#
PRC_ERR()
{
	ERR_CD=$1
	ERR_MSG=$2
	
	if [ $ERR_CD -ne 0 ]
	then
		sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME ${ERR_MSG}
		echo $JOBNAME ${ERR_MSG}
		exit ${G_RTN_ERROR}
	fi
}

#ST-2025-0000004 張 ADD END

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

#ST-2025-0000004 張 ADD START
sh ${G_TOOLSH}/EOK010210J0.sh CS00027I $JOBNAME

rc=0

#
#---システム日付取得 yyyyMMddHHmmssSSS
#
. EOK010410J0.sh 1

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

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

#
#--- バインド変数設定処理
#
sed s/ZZZZZ/${RSLT_OPEDATE}/g ${SQL_FILE_CH_U_CH0401_27} > ${SQL_FILE_CH_U_CH0401_27_TEMP}


######### 料金項目抽出変換NTT卸単独定義抽出処理 #########
# 引数　運用日付（YMD）

#
#--- UNLOAD処理
#
sh ${G_TOOLSH}/EOKULD02.sh ${SQL_FILE_CH_U_CH0401_27_TEMP} ${TMP_CH_U_CH0401_27}

rc=$?
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) "
    exit ${G_RTN_ERROR}
fi

#ST-2025-0000004 張 ADD END


#
#--- ファイル定義
#
#--INファイル
#ST-2025-0000004 張 DEL START
#INFILE_NTTO1=${MID_DIR_CH}/CHIFM460001.csv
#ST-2025-0000004 張 DEL END

#ST-2025-0000004 張 ADD START
#
# --- マッチング１ NTT卸単独定義と合計分と比べて、NTT卸明細を"1"設定、それ以外の明細を" "を設定。
#
# アンロードをマッチング
EDIT_MATCHING_QUERY ${G_TOOLSH}/util/def/CH_CM_0302.def "${INFILE_NTTO1} ${TMP_CH_U_CH0401_27}"
EXEC_MATCHING ${MATCH_OUT} ${MATCHING_QUERY_WORK}

# フラグ"1"NTT卸、フラグ" "NTT卸以外のファイルに分割する。
# 86808 20250312 張 MOD START
#bsortex -sort key="0.10asc" -record recform=txtcsv -input file=${MATCH_OUT} reclen=30 \
#   -output file=${MATCHING_FILE1} case="1.1asc.eq.'1'" reconst="0.10" \
#   -output file=${MATCHING_FILE2} case=other reconst="0.10"

bsortex -sort key="0.10asc" -record recform=txtcsv -input file=${MATCH_OUT} reclen=30 \
   -output file=${MATCHING_FILE1} case="1.1asc.eq.'1'" reconst="0.10,2.3" \
   -output file=${MATCHING_FILE2} case=other reconst="0.10"
# 86808 20250312 張 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}
fi

#
# --- マッチング2 NTT卸単独定義と未納分と比べて、NTT卸明細を"1"設定、それ以外の明細を"0"を設定。
#
# アンロードをマッチング

EDIT_MATCHING_QUERY ${G_TOOLSH}/util/def/CH_CM_0302.def "${INFILE_NTTO2} ${TMP_CH_U_CH0401_27}"
EXEC_MATCHING ${MATCH_OUT} ${MATCHING_QUERY_WORK}

# フラグ"1"NTT卸、フラグ"0"NTT卸以外のファイルに分割する。
# 86808 20250312 張 MOD START
#bsortex -sort key="0.10asc" -record recform=txtcsv -input file=${MATCH_OUT} reclen=30 \
#  -output file=${MATCHING_FILE4} case="1.1asc.eq.'1'" reconst="0.10" \
#  -output file=${MATCHING_FILE5} case=other reconst="0.10"

bsortex -sort key="0.10asc" -record recform=txtcsv -input file=${MATCH_OUT} reclen=30 \
   -output file=${MATCHING_FILE4} case="1.1asc.eq.'1'" reconst="0.10,2.3" \
   -output file=${MATCHING_FILE5} case=other reconst="0.10"
# 86808 20250312 張 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}
fi

# マージ
#NTT卸単独合計未納合併
cat ${MATCHING_FILE1} > ${MATCHING_FILE1_OUT}
cat ${MATCHING_FILE4} >> ${MATCHING_FILE1_OUT}
#NTT卸単独以外合計未納合併
cat ${MATCHING_FILE2} > ${MATCHING_FILE2_OUT}
cat ${MATCHING_FILE5} >> ${MATCHING_FILE2_OUT}

#----------------------------------------------------------------------------------------------------
#- 重複データの除去
#----------------------------------------------------------------------------------------------------

# ソート
bsortex -sort     key=0.10asc \
        -record   recform=txtcsv \
        -input    file=${MATCHING_FILE1_OUT} \
                  reclen=20 \
        -output   file=${MATCHING_FILE1_OUT_SORT}

# マージ
#86808 20250312 張 DEL START
#bsortex -merge    key=0.10asc \
#        -record   recform=txtcsv \
#        -input    file=${MATCHING_FILE1_OUT_SORT} \
#                  reclen=20 \
#        -summary  suppress first \
#        -output   file=${MATCHING_NTTO}
#86808 20250312 張 DEL END

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

# ソート
bsortex -sort     key=0.10asc \
        -record   recform=txtcsv \
        -input    file=${MATCHING_FILE2_OUT} \
                  reclen=20 \
        -output   file=${MATCHING_FILE2_OUT_SORT}
        
bsortex -merge    key=0.10asc \
        -record   recform=txtcsv \
        -input    file=${MATCHING_FILE2_OUT_SORT} \
                  reclen=20 \
        -summary  suppress first \
        -output   file=${MATCHING_NOT_NTTO}        

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

#86808 20250312 張 ADD START
#
# --- ＮＨＫ単独請求の場合はＮＴＴ卸単独請求対象外のため、
# --- ＮＨＫ単独請求を除く処理を行う。
#
# 料金コースコード"   "、料金コースコード"   "以外のファイルに分割する。
bsortex -sort key="0.10asc" -record recform=txtcsv -input file=${MATCHING_FILE1_OUT_SORT} reclen=20 \
   -output file=${MATCHING_FILE6} case="1.3asc.eq.'   '" reconst="0.10" \
   -output file=${MATCHING_FILE7} case=other reconst="0.10"

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
# アンロードをマッチング
EDIT_MATCHING_QUERY ${G_TOOLSH}/util/def/CH_CM_0305.def "${MATCHING_FILE6} ${MATCHING_FILE7}"
EXEC_MATCHING ${MATCH_OUT} ${MATCHING_QUERY_WORK}

# ソート
bsortex -sort     key=0.10asc \
        -record   recform=txtcsv \
        -input    file=${MATCH_OUT} \
                  reclen=20 \
        -output   file=${MATCHING_NTTO1}
        
# マージ
bsortex -merge    key=0.10asc \
        -record   recform=txtcsv \
        -input    file=${MATCHING_NTTO1} \
                  reclen=20 \
        -summary  suppress first \
        -output   file=${MATCHING_NTTO}

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

#86808 20250312 張 ADD END

#
# --- マッチング2 NTT卸の請求契約番号とそれ以外の請求契約番号と比べて、
# --- 一致しない請求契約番号はNTT卸単独とする。
#
# アンロードをマッチング

EDIT_MATCHING_QUERY ${G_TOOLSH}/util/def/CH_CM_0303.def "${MATCHING_NTTO} ${MATCHING_NOT_NTTO}"
EXEC_MATCHING ${MATCH_OUT} ${MATCHING_QUERY_WORK}


# ソート
bsortex -sort     key=0.10asc \
        -record   recform=txtcsv \
        -input    file=${MATCH_OUT} \
                  reclen=20 \
        -output   file=${OUT_FILE_SORT}

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

#
#---ダブルクォーテーション除去
# 
#86808 20250312 張 MOD START
#sed -e "s/\"//g" ${OUT_FILE_SORT} > ${OUT_FILE}
sed -e "s/\"//g" ${OUT_FILE_SORT} > ${OUT_FILE_TMP}
#86808 20250312 張 MOD END

#86808 20250312 張 ADD START                
#-- 改行コードをCRLFにする。
nkf -Lw ${OUT_FILE_TMP} > ${OUT_FILE}
#86808 20250312 張 ADD END

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


#ST-2025-0000004 張 ADD END
#ST-2025-0000004 張 DEL START
#
#---パラメタ定義
#
#
#P1="OPD=${RSLT_OPEDATE},"
#P2="SVCCTL=JBSbatUnitServiceControl,"
#P3="JOB=EO62A0610J0,"
#P4="IND1=,"
#P5="INF1=,"
#P6="IND2=,"
#P7="INF2=,"
#P8="OTD1=CHIFM458.def,"
#P9="OTF1=${MID_DIR_CH}/CHIFM458001.csv,"
#P10="OTD2=,"
#P11="OTF2=,"
#P12="TABLENAME=,"
#P13="SQLKEY=,"
#P14="SQLPARAM=,"
#P15="ERRFILE=,"
#P16="RECOVERY=,"
#P17="BREAKPTN=,"
#P18="FREE=${MID_DIR_CH}/CHIFM460001.csv;${MID_DIR_CH}/CHIFM461001.csv"
#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
#ST-2025-0000004 張 DEL END

# 不要ファイルを削除
#rm -f ${INFILE_NTTO1_TMP}

#ST-2025-0000004 張 ADD START
# 不要ファイル初期化
#
#--- 中間ファイルの削除を行う
#
if [ ${WK_RM} = "true" ]
then
    rm -f ${OUT_FILE_SORT}
    rm -f ${MATCHING_FILE1}
    rm -f ${MATCHING_FILE2}
    rm -f ${MATCHING_FILE3}
    rm -f ${MATCHING_FILE4}
    rm -f ${MATCHING_FILE5}
    rm -f ${MATCHING_FILE1_OUT}
    rm -f ${MATCHING_FILE2_OUT}
    rm -f ${MATCHING_FILE1_OUT_SORT}
    rm -f ${MATCHING_FILE2_OUT_SORT}
    rm -f ${MATCHING_NTTO}
    rm -f ${MATCHING_NOT_NTTO}
    rm -f ${MATCH_OUT}
    rm -f ${TMP_CH_U_CH0401_27}
#86808 20250312 張 ADD START
    rm -f ${MATCHING_FILE6}
    rm -f ${MATCHING_FILE7}
    rm -f ${MATCHING_NTTO1}
    rm -f ${OUT_FILE_TMP}
#86808 20250312 張 ADD END
fi
#ST-2025-0000004 張 ADD END

exit_rc=$rc

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

exit $exit_rc
