청구 검증 추가

This commit is contained in:
Jeon
2023-07-06 09:25:43 +09:00
parent ba0dad6d51
commit 1f43877aef
18 changed files with 961 additions and 417 deletions

View File

@@ -523,6 +523,18 @@ header .user_wrap .user_info .logout {
color: #c9c9c9; color: #c9c9c9;
} }
.contents table input {
width: 100%;
height: 40px;
border: 1px solid #c9c9c9;
position: relative;
background-color: #fff;
border-bottom: none;
border-top: none;
border-left: none;
border-right: none;
}
.contents .id { .contents .id {
position: relative; position: relative;
margin-left: 10px; margin-left: 10px;

View File

@@ -1,4 +1,5 @@
import CalcList from '../views/CalcList' import CalcList from '../views/CalcList'
import Verification from '../views/Verification'
export default [ export default [
{ {
@@ -7,6 +8,11 @@ export default [
name: 'calcList', name: 'calcList',
meta: { public: false } meta: { public: false }
}, },
{
path: '/calculate/verification',
component: Verification,
name: 'verification',
meta: { public: false }
}
] ]

View File

@@ -1,5 +1,6 @@
import httpClient from '@/common/http-client'; import httpClient from '@/common/http-client';
import calcListExcelHeader from './mock/calcExcelHeader.json'; import calcListExcelHeader from './mock/calcExcelHeader.json';
import verificationExcelHeader from './mock/verificationExcelHeader';
// 공통 코드. // 공통 코드.
const getCommCode = (params) => { const getCommCode = (params) => {
return httpClient.post('/api/v1/bo/comm/getCode', params, { withCredentials: false }); return httpClient.post('/api/v1/bo/comm/getCode', params, { withCredentials: false });
@@ -10,6 +11,9 @@ const calcListExcel = (params) => {
return httpClient.post('/api/v1/bo/calculate/calcListExcel', params); return httpClient.post('/api/v1/bo/calculate/calcListExcel', params);
} }
const verification = (params) => {
return httpClient.post('/api/v1/bo/calculate/verification', params, { withCredentials: false })
}
const getExcelHeader = category => { const getExcelHeader = category => {
// 엑셀에 출력할 Header 정보를 Mockup 데이터로 관리한다. // 엑셀에 출력할 Header 정보를 Mockup 데이터로 관리한다.
@@ -19,6 +23,9 @@ const getExcelHeader = category => {
case 'CALC': case 'CALC':
header = calcListExcelHeader.header; header = calcListExcelHeader.header;
break; break;
case 'VERIFICATION':
header = verificationExcelHeader.header;
break;
default: default:
header = ''; header = '';
break; break;
@@ -27,8 +34,11 @@ const getExcelHeader = category => {
}); });
}; };
export default { export default {
getCommCode, getCommCode,
getExcelHeader, getExcelHeader,
calcListExcel, calcListExcel,
verification
} }

View File

@@ -249,6 +249,19 @@ const utils_mixin = {
var strRegExp = '^[0-9]*$'; var strRegExp = '^[0-9]*$';
return this.onlyCommon(strRegExp, e, len, isEventCall); return this.onlyCommon(strRegExp, e, len, isEventCall);
}, },
onlyNumFstZero: function(e, len, isEventCall) {
this.cut(e, len);
var str = e.target.value;
if(str.length > 0){
if (!/^[1-9]/g.exec(str)) {
e.target.value = str.replace(/[^1-9]/gi, '');
}
}
var strRegExp = '^[0-9]*$';
return this.onlyCommon(strRegExp, e, len, isEventCall);
},
onlyEng: function (e, len, isEventCall) { onlyEng: function (e, len, isEventCall) {
var strRegExp = '^[A-Za-z]*$'; var strRegExp = '^[A-Za-z]*$';
return this.onlyCommon(strRegExp, e, len, isEventCall); return this.onlyCommon(strRegExp, e, len, isEventCall);

View File

@@ -0,0 +1,175 @@
{
"header": [
[
{
"key": "discount"
,"name": "할인율"
,"rowspan": 2
},
{
"key": "billAmt"
,"name": "유큐브 청구금액"
,"rowspan": 2
},
{
"key": "calUseAmt"
,"name": "청구금액 계산"
,"rowspan": 2
},
{
"key": "billRslt"
,"name": "청구금액 일치여부"
,"rowspan": 2
},
{
"key": "custNm"
,"name": "고객사"
,"rowspan": 2
},
{
"key": "bizrno"
,"name": "사업자번호"
,"rowspan": 2
},
{
"key": "entrNo"
,"name": "유큐브등록번호"
,"rowspan": 2
},
{
"key": "prodNm"
,"name": "상품명"
,"rowspan": 2
},
{
"key": "opnDt"
,"name": "가입일"
,"rowspan": 2
},
{
"key": "dayUser"
,"name": "일할대상"
,"rowspan": 2
},
{
"key": "dtlCdNm"
,"name": "상태"
,"rowspan": 2
},
{
"key": "succCnt"
,"name": "성공건수"
,"rowspan": 2
},
{
"name": "결과"
,"colspan": 5
},
{
"name": "이전 달",
"colspan": 9
},
{
"name": "사용금액"
,"colspan": 5
}
],
[
{
"key": "mrtUseAmt"
,"name": "과금금액"
,"format": "Format_00"
},
{
"key": "lmtPerUseDay"
,"name": "일할 정액요금"
,"format": "Format_00"
},
{
"key": "nowCfwdAmt"
,"name": "신규 이월금액"
,"format": "Format_00"
},
{
"key": "estCfwdAmt"
,"name": "예상 이월금액"
,"format": "Format_00"
},
{
"key": "rsltStr"
,"name": "일치여부"
},
{
"key": "fxLmtAmt"
,"name": "정액요금"
,"format": "Format_00"
},
{
"key": "cfwdAmt"
,"name": "이월금액"
,"format": "Format_00"
},
{
"key": "extncAmt"
,"name": "소멸금액"
,"format": "Format_00"
},
{
"key": "extcChrgAmt"
,"name": "소멸충전금액"
,"format": "Format_00"
},
{
"key": "cfwdChrgAmt"
,"name": "이월충전금액"
,"format": "Format_00"
},
{
"key": "extcChrgRsrt"
,"name": "소멸충전복원"
,"format": "Format_00"
},
{
"key": "cfwdChrgRsrt"
,"name": "이월충전복원"
,"format": "Format_00"
},
{
"key": "extcChrgBlnc"
,"name": "소멸충전잔액"
,"format": "Format_00"
},
{
"key": "cfwdChrgBlnc"
,"name": "이월충전잔액"
,"format": "Format_00"
},
{
"key": "totalUseAmt"
,"name": "총"
,"format": "Format_00"
},
{
"key": "kkoNotiUseAmt"
,"name": "알림톡"
,"format": "Format_00"
},
{
"key": "smsUseAmt"
,"name": "SMS"
,"format": "Format_00"
},
{
"key": "lmsUseAmt"
,"name": "LMS"
,"format": "Format_00"
},
{
"key": "mmsUseAmt"
,"name": "MMS"
,"format": "Format_00"
}
]
]
}

View File

@@ -0,0 +1,294 @@
<template>
<div class="contents">
<div class="contents_wrap">
<div class="top_wrap">
<h3 class="title">청구 검증</h3>
<p class="breadcrumb">운영 관리 &gt; 청구 검증</p>
</div>
<div class="search_wrap">
<div class="input_box cal">
<label for="right" class="label txt">조회기간</label>
<div class="term">
<span class="custom_input icon_date">
<vuejs-datepicker
:language="ko"
:format="customFormatter"
:disabled-dates="disabledDate"
:minimumView="sDateDiv"
:maximumView="sDateDiv"
v-model="lmtYm"
@selected="selectedDate"
></vuejs-datepicker>
</span>
</div>
</div>
</div>
<div class="info">
<div class="count">
<span>{{totalCnt}}</span>
</div>
<div class="button_group">
<button type="button" class="button blue" @click="excuteVerification()">청구 검증 실행</button>
</div>
</div>
<div class="table calculate scroll">
<section>
<div class="box_scroll box_OFvis">
<table class="tbl_col_type cgrid" style="table-layout: fixed;">
<colgroup>
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 150px;">
<col style="width: 120px;">
<col style="width: 180px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 80px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 80px;">
<col style="width: 80px;">
<col style="width: 100px;">
</colgroup>
<thead>
<tr>
<th scope="col" rowspan="2">할인율</th>
<th scope="col" rowspan="2">유큐브 청구금액</th>
<th scope="col" rowspan="2">고객사</th>
<th scope="col" rowspan="2">사업자번호</th>
<th scope="col" rowspan="2">유큐브등록번호</th>
<th scope="col" rowspan="2">상품명</th>
<th scope="col" rowspan="2">가입일</th>
<th scope="col" rowspan="2">일할대상</th>
<th scope="col" rowspan="2">상태</th>
<th scope="col" rowspan="2">성공건수</th>
<th scope="colgroup" colspan="5" id="thHeader08" class="th_line">결과</th>
<th scope="colgroup" colspan="9" id="thHeader09" class="th_line">이전 </th>
<th scope="colgroup" colspan="5" id="thHeader10" class="th_line">사용금액</th>
</tr>
<tr>
<th headers="thHeader08" class="th_line">과금금액</th>
<th headers="thHeader08" class="th_line">일할 정액요금</th>
<th headers="thHeader08" class="th_line">신규 이월금액</th>
<th headers="thHeader08" class="th_line">예상 이월금액</th>
<th headers="thHeader08" class="th_line">일치여부</th>
<th headers="thHeader09" class="th_line">정액요금</th>
<th headers="thHeader09" class="th_line">이월금액</th>
<th headers="thHeader09" class="th_line">소멸금액</th>
<th headers="thHeader09" class="th_line">소멸충전금액</th>
<th headers="thHeader09" class="th_line">이월충전금액</th>
<th headers="thHeader09" class="th_line">소멸충전복원</th>
<th headers="thHeader09" class="th_line">이월충전복원</th>
<th headers="thHeader09" class="th_line">소멸충전잔액</th>
<th headers="thHeader09" class="th_line">이월충전잔액</th>
<th headers="thHeader010" class="th_line"></th>
<th headers="thHeader010" class="th_line">알림톡</th>
<th headers="thHeader010" class="th_line">SMS</th>
<th headers="thHeader010" class="th_line">LMS</th>
<th headers="thHeader010" class="th_line">MMS</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, i) in list" v-bind:key="i" >
<td><input type="text" class="search-box" @keypress="onlyNumFstZero" @input="onlyNumFstZero" maxlength="3" v-model="item.discount" autocomplete="off"></td>
<td><input type="text" class="search-box" @keypress="onlyNumFstZero" @input="onlyNumFstZero" maxlength="10" v-model="item.billAmt" autocomplete="off"></td>
<td>{{item.custNm}}</td>
<td>{{item.bizrno}}</td>
<td>{{item.entrNo}}</td>
<td>{{item.prodNm}}</td>
<td>{{item.opnDt}}</td>
<td>{{item.dayUser}}</td>
<td>{{item.dtlCdNm}}</td>
<td>{{item.succCnt}}</td>
<td>{{item.mrtUseAmt}}</td>
<td>{{item.lmtPerUseDay}}</td>
<td>{{item.nowCfwdAmt}}</td>
<td>{{item.estCfwdAmt}}</td>
<td>{{item.rsltStr}}</td>
<td>{{item.fxLmtAmt}}</td>
<td>{{item.cfwdAmt}}</td>
<td>{{item.extncAmt}}</td>
<td>{{item.extcChrgAmt}}</td>
<td>{{item.cfwdChrgAmt}}</td>
<td>{{item.extcChrgRsrt}}</td>
<td>{{item.cfwdChrgRsrt}}</td>
<td>{{item.extcChrgBlnc}}</td>
<td>{{item.cfwdChrgBlnc}}</td>
<td>{{item.totalUseAmt}}</td>
<td>{{item.kkoNotiUseAmt}}</td>
<td>{{item.smsUseAmt}}</td>
<td>{{item.lmsUseAmt}}</td>
<td>{{item.mmsUseAmt}}</td>
</tr>
<tr v-if="list.length < 1">
<td colspan="29" class="no_data">검색 결과가 없습니다.</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
<common-modal ref="commmonModal"></common-modal>
</div>
</div>
</template>
<script>
import moment from 'moment';
import xlsx from '@/common/excel';
import commonModal from '@/components/modal/commonModal';
import calcMgtApi from "@/modules/calculate/service/calcMgtApi";
import {utils_mixin, chkPattern2} from '../service/mixins';
export default {
name: 'verification',
mixins: [utils_mixin, chkPattern2],
data() {
return {
ko: vdp_translation_ko.js,
periodDay: 7,
sDateDiv: 'month',
lmtYm: new Date(new Date().setMonth(new Date().getMonth()-1)),
disabledDate: {from : new Date(new Date().setMonth(new Date().getMonth()-1))},
row: {},
list: [],
params: {},
pageType: 'VERIFICATION',
totalCnt : 0,
noDataStr: '검색 결과가 없습니다.',
excelHeader: []
};
},
components: {
commonModal,
vuejsDatepicker
},
computed : {},
watch: {
discount : function(){
console.log("dddd");
}
},
created() {
this.getExcelHeader();
},
destroyed() {},
mounted() {
let isKeep = false;
this.verification();
},
methods: {
async verification() {
this.params = {
lmtYm: moment(this.lmtYm).format('YYYYMM')
}
try {
const response = await calcMgtApi.verification(this.params);
const result = response.data;
if (result != null && result.retCode == '0000') {
this.list = result.data.list;
this.totalCnt = result.data.list.length;
}
} catch(err){
this.row.title = '청구 목록 조회 실패';
this.row.msg1 = err;
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
},
customFormatter: function (date) {
if (this.sDateDiv == 'month') {
return moment(date).format('YYYY-MM');
} else if (this.sDateDiv == 'year') {
return moment(date).format('YYYY');
} else {
return moment(date).format('YYYY-MM-DD');
}
},
selectedDate(day) {
let isKeep = false;
this.lmtYm = day;
this.verification();
},
getExcelHeader() {
// 헤더를 mockup으로 관리한다.
calcMgtApi.getExcelHeader(this.pageType).then((res) => {
this.excelHeader = res;
});
},
async excuteVerification() {
let today = moment().format('YYYYMMDDHHmmss');
const saveFileName = `청구 검증_${today}.xls`;
if (this.list.length <= 0) {
this.row.title = '청구 검증 실행';
this.row.msg1 = '조회된 데이터가 없습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
if(moment(new Date(new Date().setMonth(new Date().getMonth()-1))).format('YYYYMM') == moment(this.lmtYm).format('YYYYMM')
&& (new Date().getDate() < 4)){
this.row.title = '청구 검증 실행';
this.row.msg1 = '해당월은 4일 부터 청구 검증이 가능합니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
const data = this.list.map((item,index) => {
if(item.discount.trim() == undefined || item.discount.trim() == null || item.discount.trim() == "" || item.discount.trim().toLowerCase() == "e"){
item.discount = 0;
}
if(item.billAmt.trim() == undefined || item.billAmt.trim() == null || item.billAmt.trim() == "" || item.billAmt.trim().toLowerCase() == "e"){
item.billAmt = 0;
}
item.calUseAmt = (Number(item.lmtPerUseDay)+Number(item.mrtUseAmt));
item.calUseAmt = item.calUseAmt - (item.calUseAmt*(Number(item.discount)/100));
item.calUseAmt = Math.floor(item.calUseAmt/10) * 10;
item.billRslt = "불일치";
if(item.calUseAmt == item.billAmt){
item.billRslt = "일치";
}
return {...item};
});
let options = {
header: this.excelHeader,
dataOrder: 'header',
};
xlsx.export(data, saveFileName, options).then(() => {});
},
},
};
</script>

View File

@@ -12,6 +12,8 @@ import kr.co.uplus.ez.api.calculate.dto.CalcListExcelReqDto;
import kr.co.uplus.ez.api.calculate.dto.CalcListExcelResDto; import kr.co.uplus.ez.api.calculate.dto.CalcListExcelResDto;
import kr.co.uplus.ez.api.calculate.dto.CalcListReqDto; import kr.co.uplus.ez.api.calculate.dto.CalcListReqDto;
import kr.co.uplus.ez.api.calculate.dto.CalcListResDto; import kr.co.uplus.ez.api.calculate.dto.CalcListResDto;
import kr.co.uplus.ez.api.calculate.dto.VerificationReqDto;
import kr.co.uplus.ez.api.calculate.dto.VerificationResDto;
import kr.co.uplus.ez.common.components.ValidComponents; import kr.co.uplus.ez.common.components.ValidComponents;
import kr.co.uplus.ez.common.data.ApiResponseCode; import kr.co.uplus.ez.common.data.ApiResponseCode;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -63,4 +65,19 @@ public class CalculateController {
} }
return calculateService.calcListExcel(calcListExcelReqDto); return calculateService.calcListExcel(calcListExcelReqDto);
} }
/**
* date : 2023. 7. 5.
* auth : Jeon
* desc : 청구검증 목록 조회
* @param verificationReqDto
* @return
*/
@ApiOperation(value = "verification", notes = "월별 통계 목록 조회")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "/verification" , method = {RequestMethod.POST})
@ResponseBody
public VerificationResDto verification(@RequestBody @Valid VerificationReqDto verificationReqDto) {
return calculateService.getVerificationList(verificationReqDto);
}
} }

View File

@@ -3,6 +3,9 @@ package kr.co.uplus.ez.api.calculate;
import kr.co.uplus.ez.api.calculate.dto.CalcList; import kr.co.uplus.ez.api.calculate.dto.CalcList;
import kr.co.uplus.ez.api.calculate.dto.CalcListExcelReqDto; import kr.co.uplus.ez.api.calculate.dto.CalcListExcelReqDto;
import kr.co.uplus.ez.api.calculate.dto.CalcListReqDto; import kr.co.uplus.ez.api.calculate.dto.CalcListReqDto;
import kr.co.uplus.ez.api.calculate.dto.VerificationDto;
import kr.co.uplus.ez.api.calculate.dto.VerificationReqDto;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
@@ -16,4 +19,6 @@ public interface CalculateMapper {
List<CalcList> selectCalculateExcelList(CalcListExcelReqDto calcListExcelReqDto); List<CalcList> selectCalculateExcelList(CalcListExcelReqDto calcListExcelReqDto);
List<VerificationDto> getVerificationList(VerificationReqDto verificationReqDto);
} }

View File

@@ -1,6 +1,10 @@
package kr.co.uplus.ez.api.calculate; package kr.co.uplus.ez.api.calculate;
import kr.co.uplus.ez.api.calculate.dto.*; import kr.co.uplus.ez.api.calculate.dto.*;
import kr.co.uplus.ez.api.calculate.dto.VerificationDto;
import kr.co.uplus.ez.api.calculate.dto.VerificationReqDto;
import kr.co.uplus.ez.api.calculate.dto.VerificationRes;
import kr.co.uplus.ez.api.calculate.dto.VerificationResDto;
import kr.co.uplus.ez.common.data.ApiResponseCode; import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.Paging; import kr.co.uplus.ez.common.data.Paging;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
@@ -11,6 +15,8 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.validation.Valid;
@Service @Service
public class CalculateService { public class CalculateService {
@@ -79,4 +85,26 @@ public class CalculateService {
return new CalcListExcelResDto(ApiResponseCode.SUCCESS, calcListExcelRes); return new CalcListExcelResDto(ApiResponseCode.SUCCESS, calcListExcelRes);
} }
/**
* date : 2023. 7. 5.
* auth : Jeon
* desc : 청구검증 목록 조회
* @param svcCheckListReqDto
* @return
*/
public VerificationResDto getVerificationList(@Valid VerificationReqDto verificationReqDto) {
CalculateMapper calcMapper = sqlSessionSlave.getMapper(CalculateMapper.class);
VerificationRes verificationRes = new VerificationRes();
List<VerificationDto> verificationDtoList = calcMapper.getVerificationList(verificationReqDto);
verificationRes.setList(verificationDtoList);
Paging paging = new Paging();
paging.setTotalCnt(String.valueOf(verificationDtoList.size()));
verificationRes.setPaging(paging);
return new VerificationResDto(ApiResponseCode.SUCCESS, verificationRes);
}
} }

View File

@@ -1,4 +1,4 @@
package kr.co.uplus.ez.api.sysMgt.dto; package kr.co.uplus.ez.api.calculate.dto;
import java.io.Serializable; import java.io.Serializable;

View File

@@ -0,0 +1,17 @@
package kr.co.uplus.ez.api.calculate.dto;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@SuppressWarnings("serial")
@Data
public class VerificationReqDto implements Serializable {
@NotNull
@ApiModelProperty(example = "202306", name = "조회 년월", dataType = "String")
private String lmtYm;
}

View File

@@ -1,4 +1,4 @@
package kr.co.uplus.ez.api.sysMgt.dto; package kr.co.uplus.ez.api.calculate.dto;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;

View File

@@ -1,4 +1,4 @@
package kr.co.uplus.ez.api.sysMgt.dto; package kr.co.uplus.ez.api.calculate.dto;
import java.io.Serializable; import java.io.Serializable;

View File

@@ -451,20 +451,4 @@ public class SysMgtController {
} }
/**
* date : 2023. 7. 3.
* auth : Jeon
* desc : 청구검증 목록 조회
* @param monthListReqDto
* @param bindingResult
* @return
*/
@ApiOperation(value = "verification", notes = "월별 통계 목록 조회")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "/verification" , method = {RequestMethod.POST})
@ResponseBody
public VerificationResDto verification() {
return sysService.getVerificationList();
}
} }

View File

@@ -10,6 +10,8 @@ import java.nio.file.Path;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.validation.Valid;
@Mapper @Mapper
public interface SysMgtMapper { public interface SysMgtMapper {
@@ -59,6 +61,4 @@ public interface SysMgtMapper {
int notiListSelectCnt(NotiListReqDto notiListReqDto); int notiListSelectCnt(NotiListReqDto notiListReqDto);
List<VerificationDto> getVerificationList();
} }

View File

@@ -744,25 +744,4 @@ public class SysMgtService {
return new SvcCheckListResDto(ApiResponseCode.SUCCESS,svcCheckListRes); return new SvcCheckListResDto(ApiResponseCode.SUCCESS,svcCheckListRes);
} }
/**
* date : 2023. 7. 3.
* auth : Jeon
* desc : 청구검증 목록 조회
* @return
*/
public VerificationResDto getVerificationList() {
SysMgtMapper sysmgtmapper = sqlSessionSlave.getMapper(SysMgtMapper.class);
VerificationRes verificationRes = new VerificationRes();
List<VerificationDto> verificationDtoList = sysmgtmapper.getVerificationList();
verificationRes.setList(verificationDtoList);
Paging paging = new Paging();
paging.setTotalCnt(String.valueOf(verificationDtoList.size()));
verificationRes.setPaging(paging);
return new VerificationResDto(ApiResponseCode.SUCCESS, verificationRes);
}
} }

View File

@@ -139,4 +139,352 @@
ORDER BY eud.USE_YM DESC, eud.CUST_NM DESC ORDER BY eud.USE_YM DESC, eud.CUST_NM DESC
</select> </select>
<select id="getVerificationList" parameterType="kr.co.uplus.ez.api.calculate.dto.VerificationReqDto" resultType="kr.co.uplus.ez.api.calculate.dto.VerificationDto">
/* calculate-mapper.xml(getVerificationList) 청구 검증 목록 조회 */
SELECT
CUST_NM
,A.BIZRNO
,A.ENTR_NO
,A.PROD_NM
,A.OPN_DT
,A.DAY_USER
,A.DTL_CD_NM
,A.SUCC_CNT
,A.FX_LMT_AMT
,A.LMT_PER_USE_DAY
,A.CFWD_AMT
,A.EXTNC_AMT
,A.EXTC_CHRG_AMT
,A.CFWD_CHRG_AMT
,A.EXTC_CHRG_RSRT
,A.CFWD_CHRG_RSRT
,A.EXTC_CHRG_BLNC
,A.CFWD_CHRG_BLNC
,FORMAT(A.MRT_USE_AMT,0) AS MRT_USE_AMT
,FORMAT(A.NOW_CFWD_AMT,0) AS NOW_CFWD_AMT
,CONCAT(IF(A.EST_CFWD_AMT <![CDATA[ < ]]> 0,'(과금)',''),FORMAT(ABS(A.EST_CFWD_AMT),0)) AS EST_CFWD_AMT
,IF((A.EST_CFWD_AMT <![CDATA[ < ]]> 0 AND (A.MRT_USE_AMT + A.EST_CFWD_AMT) = 0) OR (A.EST_CFWD_AMT = A.NOW_CFWD_AMT),'일치','불일치') AS RSLT_STR
,A.TOTAL_USE_AMT
,A.KKO_NOTI_USE_AMT
,A.SMS_USE_AMT
,A.LMS_USE_AMT
,A.MMS_USE_AMT
FROM (
SELECT
CUST_NM
,A.USER_SEQ
,A.CUST_SEQ
,A.SUBS_ID
,A.BIZRNO
,A.ENTR_NO
,A.PROD_CD
,A.PROD_NM
,A.OPN_DT
,A.SUBS_STTUS_CD
,A.DTL_CD_NM
,FORMAT(A.FX_LMT_AMT,1) AS FX_LMT_AMT
,FORMAT(A.CFWD_AMT,1) AS CFWD_AMT
,FORMAT(A.EXTNC_AMT,1) AS EXTNC_AMT
,FORMAT(A.CFWD_RSTRT_BLNC,1) AS CFWD_RSTRT_BLNC
,A.MRT_USE_AMT
,FORMAT(A.EXTC_CHRG_AMT,1) AS EXTC_CHRG_AMT
,FORMAT(A.CFWD_CHRG_AMT,1) AS CFWD_CHRG_AMT
,FORMAT(A.EXTC_CHRG_RSRT,1) AS EXTC_CHRG_RSRT
,FORMAT(A.CFWD_CHRG_RSRT,1) AS CFWD_CHRG_RSRT
,FORMAT(A.EXTC_CHRG_BLNC,1) AS EXTC_CHRG_BLNC
,FORMAT(A.CFWD_CHRG_BLNC,1) AS CFWD_CHRG_BLNC
,A.NOW_CFWD_AMT
,(CASE
WHEN A.SUBS_STTUS_CD = '99'
THEN 0
ELSE (IF(A.SUBS_STTUS_CD IN ('03','04') AND A.USE_DAY IS NULL,0,(ROUND((A.FX_LMT_AMT/LAST_DT)*IFNULL(A.USE_DAY,LAST_DT))))
+ A.CFWD_AMT - A.EXTNC_AMT - A.TOTAL_USE_AMT
+ (A.EXTC_CHRG_AMT - (A.EXTC_CHRG_RSRT+A.EXTC_CHRG_BLNC)) + (A.CFWD_CHRG_RSRT + A.CFWD_CHRG_BLNC))
END) AS EST_CFWD_AMT
,IF(A.SUBS_STTUS_CD IN ('03','04') AND A.USE_DAY IS NULL,0,(ROUND((A.FX_LMT_AMT/LAST_DT)*IFNULL(A.USE_DAY,LAST_DT)))) AS LMT_PER_USE_DAY
,A.TOTAL_USE_AMT
,A.KKO_NOTI_USE_AMT
,A.SMS_USE_AMT
,A.LMS_USE_AMT
,A.MMS_USE_AMT
,A.REQ_CNT
,A.SUCC_CNT
,A.SMS
,A.LMS
,A.MMS
,A.SMS_GLOBAL
,A.RCS
,A.KKO_NOTI
,A.KKO_FRIEND
,A.SMS_FB
,A.LMS_FB
,A.MMS_FB
,A.SMS_FAIL
,A.LMS_FAIL
,A.MMS_FAIL
,A.SMS_GLOBAL_FAIL
,A.RCS_FAIL
,A.KKO_NOTI_FAIL
,A.KKO_FRIEND_FAIL
,A.SMS_WAIT
,A.LMS_WAIT
,A.MMS_WAIT
,A.KKO_NOTI_WAIT
,A.USE_DAY
,IF(A.LAST_DT = A.USE_DAY,'비대상','대상') AS DAY_USER
FROM (
SELECT
ECI.CUST_NM
,ECI.BIZRNO
,A.ENTR_NO
,A.PROD_CD
,EPI.PROD_NM
,A.OPN_DT
,A.SUBS_STTUS_CD
,ECD.DTL_CD_NM
,ECI.CUST_SEQ
,A.USER_SEQ
,A.SUBS_ID
,A.FX_LMT_AMT
,A.CFWD_AMT
,A.EXTNC_AMT
,A.CFWD_RSTRT_BLNC
,A.MRT_USE_AMT
,A.NOW_CFWD_AMT
,A.EXTC_CHRG_AMT
,A.CFWD_CHRG_AMT
,A.EXTC_CHRG_RSRT
,A.CFWD_CHRG_RSRT
,A.EXTC_CHRG_BLNC
,A.CFWD_CHRG_BLNC
,((A.KKO_NOTI+A.KKO_NOTI_WAIT) * A.KKO_NOTI_COST) AS KKO_NOTI_USE_AMT
,((A.SMS+A.SMS_FB+A.SMS_WAIT) * A.SMS_COST) AS SMS_USE_AMT
,((A.LMS+A.LMS_FB+A.LMS_WAIT) * A.LMS_COST) AS LMS_USE_AMT
,((A.MMS+A.MMS_FB+A.MMS_WAIT) * A.MMS_COST) AS MMS_USE_AMT
,((A.KKO_NOTI+A.KKO_NOTI_WAIT) * A.KKO_NOTI_COST)
+((A.SMS+A.SMS_FB+A.SMS_WAIT) * A.SMS_COST)
+((A.LMS+A.LMS_FB+A.LMS_WAIT) * A.LMS_COST)
+((A.MMS+A.MMS_FB+A.MMS_WAIT) * A.MMS_COST) AS TOTAL_USE_AMT
,A.REQ_CNT
,(A.SMS + A.LMS + A.MMS + A.SMS_GLOBAL + A.RCS + A.KKO_NOTI + A.KKO_FRIEND + A.SMS_FB + A.LMS_FB + A.MMS_FB) AS SUCC_CNT
,A.SMS
,A.LMS
,A.MMS
,A.SMS_GLOBAL
,A.RCS
,A.KKO_NOTI
,A.KKO_FRIEND
,A.SMS_FB
,A.LMS_FB
,A.MMS_FB
,A.SMS_FAIL
,A.LMS_FAIL
,A.MMS_FAIL
,A.SMS_GLOBAL_FAIL
,A.RCS_FAIL
,A.KKO_NOTI_FAIL
,A.KKO_FRIEND_FAIL
,A.SMS_WAIT
,A.LMS_WAIT
,A.MMS_WAIT
,A.KKO_NOTI_WAIT
,A.KKO_NOTI_COST
,A.SMS_COST
,A.LMS_COST
,A.MMS_COST
,IF(USETB.USE_DAY <![CDATA[ < ]]> 0,NULL,USETB.USE_DAY) AS USE_DAY
,DATE_FORMAT(LAST_DAY(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01')),'%d') AS LAST_DT
FROM (
SELECT
LMT.USER_SEQ
,LMT.ENTR_NO
,LMT.PROD_CD
,LMT.OPN_DT
,LMT.SUBS_STTUS_CD
,LMT.FX_LMT_AMT
,LMT.CFWD_AMT
,LMT.EXTNC_AMT
,LMT.CFWD_RSTRT_BLNC
,LMT.MRT_USE_AMT
,LMT.NOW_CFWD_AMT
,LMT.EXTC_CHRG_AMT
,LMT.CFWD_CHRG_AMT
,LMT.EXTC_CHRG_RSRT
,LMT.CFWD_CHRG_RSRT
,LMT.EXTC_CHRG_BLNC
,LMT.CFWD_CHRG_BLNC
,LMT.KKO_NOTI_COST
,LMT.SMS_COST
,LMT.LMS_COST
,LMT.MMS_COST
,LMT.SUBS_ID
,MAX(LMT.CUST_SEQ) AS CUST_SEQ
,IFNULL(SUM(VRF.REQ_CNT),0) AS REQ_CNT
,IFNULL(SUM(VRF.SMS),0) AS SMS
,IFNULL(SUM(VRF.LMS),0) AS LMS
,IFNULL(SUM(VRF.MMS),0) AS MMS
,IFNULL(SUM(VRF.SMS_GLOBAL),0) AS SMS_GLOBAL
,IFNULL(SUM(VRF.RCS),0) AS RCS
,IFNULL(SUM(VRF.KKO_NOTI),0) AS KKO_NOTI
,IFNULL(SUM(VRF.KKO_FRIEND),0) AS KKO_FRIEND
,IFNULL(SUM(VRF.SMS_FB),0) AS SMS_FB
,IFNULL(SUM(VRF.LMS_FB),0) AS LMS_FB
,IFNULL(SUM(VRF.MMS_FB),0) AS MMS_FB
,IFNULL(SUM(VRF.SMS_FAIL),0) AS SMS_FAIL
,IFNULL(SUM(VRF.LMS_FAIL),0) AS LMS_FAIL
,IFNULL(SUM(VRF.MMS_FAIL),0) AS MMS_FAIL
,IFNULL(SUM(VRF.SMS_GLOBAL_FAIL),0) AS SMS_GLOBAL_FAIL
,IFNULL(SUM(VRF.RCS_FAIL),0) AS RCS_FAIL
,IFNULL(SUM(VRF.KKO_NOTI_FAIL),0) AS KKO_NOTI_FAIL
,IFNULL(SUM(VRF.KKO_FRIEND_FAIL),0) AS KKO_FRIEND_FAIL
,IFNULL(SUM(VRF.SMS_WAIT),0) AS SMS_WAIT
,IFNULL(SUM(VRF.LMS_WAIT),0) AS LMS_WAIT
,IFNULL(SUM(VRF.MMS_WAIT),0) AS MMS_WAIT
,IFNULL(SUM(VRF.KKO_NOTI_WAIT),0) AS KKO_NOTI_WAIT
FROM (
SELECT
ESI.USER_SEQ
,ESI.ENTR_NO
,IFNULL(EPR.PROD_CD,ESI.PROD_CD) AS PROD_CD
,ESU.CUST_SEQ
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m'),EUL.FX_LMT_AMT,0)) AS FX_LMT_AMT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m'),EUL.CFWD_AMT,0)) AS CFWD_AMT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(DATE_ADD(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),INTERVAL +1 MONTH),'%Y%m'),EUL.EXTNC_AMT,0)) AS EXTNC_AMT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m'),EUL.CFWD_RSTRT_BLNC,0)) AS CFWD_RSTRT_BLNC
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m'),EUL.MRT_USE_AMT,0)) AS MRT_USE_AMT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m'),EUL.EXTC_CHRG_AMT,0)) AS EXTC_CHRG_AMT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m'),EUL.CFWD_CHRG_AMT,0)) AS CFWD_CHRG_AMT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m'),EUL.EXTC_CHRG_RSRT,0)) AS EXTC_CHRG_RSRT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m'),EUL.CFWD_CHRG_RSRT,0)) AS CFWD_CHRG_RSRT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m'),EUL.EXTC_CHRG_BLNC,0)) AS EXTC_CHRG_BLNC
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m'),EUL.CFWD_CHRG_BLNC,0)) AS CFWD_CHRG_BLNC
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(DATE_ADD(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),INTERVAL +1 MONTH),'%Y%m'),EUL.CFWD_AMT,0)) AS NOW_CFWD_AMT
,ESC.KKO_NOTI_COST
,ESC.SMS_COST
,ESC.LMS_COST
,ESC.MMS_COST
,ESI.SUBS_ID
,DATE_FORMAT(ESI.OPN_DT,'%Y-%m-%d') AS OPN_DT
,ESI.SUBS_STTUS_CD
FROM hubez_common.EZ_SUBS_INFO ESI
LEFT JOIN hubez_admin.EZ_USER_LMT EUL
ON ESI.USER_SEQ = EUL.USER_SEQ AND EUL.LMT_YM BETWEEN DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m') AND DATE_FORMAT(DATE_ADD(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),INTERVAL +1 MONTH),'%Y%m')
INNER JOIN hubez_common.EZ_SVC_USER ESU ON ESI.USER_SEQ = ESU.USER_SEQ
LEFT JOIN (SELECT
SUBS_ID,PROD_CD
FROM hubez_common.EZ_PRDCHG_RSRV
WHERE (SUBS_ID,EFCT_ST_DT) IN (
SELECT
SUBS_ID, MAX(EFCT_ST_DT)
FROM hubez_common.EZ_PRDCHG_RSRV
WHERE TRT_STTUS_CD = '02'
AND DATE_FORMAT(EFCT_ST_DT,'%Y%m') = DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m')
GROUP BY SUBS_ID
)
) EPR ON ESI.SUBS_ID = EPR.SUBS_ID
, (
SELECT
SUM(IF(ESC.SND_CH_CD = 'ALIMTALK',UCOST,0)) AS KKO_NOTI_COST
,SUM(IF(ESC.SND_CH_CD = 'SMS',UCOST,0)) AS SMS_COST
,SUM(IF(ESC.SND_CH_CD = 'LMS',UCOST,0)) AS LMS_COST
,SUM(IF(ESC.SND_CH_CD = 'MMS',UCOST,0)) AS MMS_COST
FROM hubez_common.EZ_SND_UCOST ESC
) ESC
WHERE ESI.SUBS_STTUS_CD IN ('02','03','04','99')
AND ESI.OPN_DT <![CDATA[ < ]]> DATE_FORMAT(DATE_ADD(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),INTERVAL +1 MONTH),'%Y%m01')
GROUP BY ESI.USER_SEQ
) LMT
LEFT JOIN (
SELECT
A.WEB_REQ_ID
,A.USER_SEQ
,A.REQ_CNT
,A.SNDREQ_CH_CD
,A.SMS
,A.LMS
,A.MMS
,A.SMS_GLOBAL
,A.RCS
,A.KKO_NOTI
,A.KKO_FRIEND
,A.SMS_FB
,A.LMS_FB
,A.MMS_FB
,A.SMS_FAIL
,A.LMS_FAIL
,A.MMS_FAIL
,A.SMS_GLOBAL_FAIL
,A.RCS_FAIL
,A.KKO_NOTI_FAIL
,A.KKO_FRIEND_FAIL
,IF(A.SNDREQ_CH_CD = 'SMS',(A.REQ_CNT)-(A.SMS+A.SMS_FAIL),0) AS SMS_WAIT
,IF(A.SNDREQ_CH_CD = 'LMS',(A.REQ_CNT)-(A.LMS+A.LMS_FAIL),0) AS LMS_WAIT
,IF(A.SNDREQ_CH_CD = 'MMS',(A.REQ_CNT)-(A.MMS+A.MMS_FAIL),0) AS MMS_WAIT
,IF(A.SNDREQ_CH_CD = 'ALIMTALK',(A.REQ_CNT)-(A.KKO_NOTI+A.KKO_NOTI_FAIL+KKO_NOTI_FW_FB_CNT),0) AS KKO_NOTI_WAIT
FROM (
SELECT
ESR.WEB_REQ_ID
,ESR.USER_SEQ
,ESR.REQ_CNT
,ESR.SNDREQ_CH_CD
,SUM(IF((EML.DONE_CODE = 10000 OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'SMS', 1, 0)) AS SMS
,SUM(IF((EML.DONE_CODE = 10000 OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'LMS', 1, 0)) AS LMS
,SUM(IF((EML.DONE_CODE = 10000 OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'MMS', 1, 0)) AS MMS
,SUM(IF((EML.DONE_CODE = 10000 OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'SMS_GLOBAL', 1, 0)) AS SMS_GLOBAL
,SUM(IF(((EML.DONE_CODE = 10000 AND EML.DONE_PRODUCT = 'RCS') OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'RCS', 1, 0)) AS RCS
,SUM(IF(((EML.DONE_CODE = 10000 AND EML.DONE_PRODUCT = 'KALT1') OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'KKO_NOTI', 1, 0)) AS KKO_NOTI
,SUM(IF(((EML.DONE_CODE = 10000 AND EML.DONE_PRODUCT = 'KALT2') OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'KKO_FRIEND', 1, 0)) AS KKO_FRIEND
,SUM(IF(EML.DONE_CODE = 10000 AND EML.REQ_PRODUCT IN ('RCS','KKO_NOTI','KKO_FRIEND') AND EML.DONE_PRODUCT = 'SMS', 1, 0)) AS SMS_FB
,SUM(IF(EML.DONE_CODE = 10000 AND EML.REQ_PRODUCT IN ('RCS','KKO_NOTI','KKO_FRIEND') AND EML.DONE_PRODUCT = 'LMS', 1, 0)) AS LMS_FB
,SUM(IF(EML.DONE_CODE = 10000 AND EML.REQ_PRODUCT IN ('RCS','KKO_NOTI','KKO_FRIEND') AND EML.DONE_PRODUCT = 'MMS', 1, 0)) AS MMS_FB
,SUM(IF((EML.DONE_CODE = 10000 AND EML.DONE_PRODUCT != 'RCS') AND EML.REQ_PRODUCT = 'RCS', 1, 0)) AS RCS_FW_FB_CNT
,SUM(IF((EML.DONE_CODE = 10000 AND EML.DONE_PRODUCT != 'KALT1') AND EML.REQ_PRODUCT = 'KKO_NOTI', 1, 0)) AS KKO_NOTI_FW_FB_CNT
,SUM(IF((EML.DONE_CODE = 10000 AND EML.DONE_PRODUCT != 'KALT2') AND EML.REQ_PRODUCT = 'KKO_FRIEND', 1, 0)) AS KKO_FRIEND_FW_FB_CNT
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'SMS', 1, 0)) AS SMS_FAIL
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'LMS', 1, 0)) AS LMS_FAIL
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'MMS', 1, 0)) AS MMS_FAIL
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'SMS_GLOBAL', 1, 0)) AS SMS_GLOBAL_FAIL
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'RCS', 1, 0)) AS RCS_FAIL
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'KKO_NOTI', 1, 0)) AS KKO_NOTI_FAIL
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'KKO_FRIEND', 1, 0)) AS KKO_FRIEND_FAIL
FROM hubez_admin.EZ_SNDDCT_REQ PARTITION(EZ_SNDDCT_REQ_${lmtYm}) ESR LEFT OUTER JOIN hubez_send.EZ_MSG_LOG PARTITION(PT_EZ_MSG_LOG_${lmtYm}) EML ON ESR.WEB_REQ_ID = EML.WEB_REQ_ID
GROUP BY ESR.WEB_REQ_ID ,ESR.USER_SEQ ,ESR.REQ_CNT
) A
) VRF ON LMT.USER_SEQ = VRF.USER_SEQ
GROUP BY LMT.USER_SEQ
) A LEFT JOIN hubez_common.EZ_CD_DTL ECD ON A.SUBS_STTUS_CD = ECD.DTL_CD AND ECD.GRP_CD = 'SUBS_STTUS_CD'
LEFT JOIN (
SELECT
A.USER_SEQ
,SUM(CASE
WHEN A.STTUS_PLAG = 'S' THEN A.EFCT_FNS_DT - A.EFCT_ST_DT + 1
WHEN A.STTUS_PLAG = 'P' THEN -1
WHEN A.STTUS_PLAG = 'E' THEN 0
END) AS USE_DAY
FROM (
SELECT
ESI.CUST_SEQ
,ESI.USER_SEQ
,ESI.SUBS_ID
,IF(DATE_FORMAT(ESH.EFCT_ST_DT,'%Y%m') != DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m'),'01',DATE_FORMAT(ESH.EFCT_ST_DT,'%d')) AS EFCT_ST_DT
,IF(ESH.EFCT_FNS_DT <![CDATA[ > ]]> LAST_DAY(DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m01')) ,DATE_FORMAT(LAST_DAY(DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m01')),'%d'),DATE_FORMAT(ESH.EFCT_FNS_DT,'%d')) AS EFCT_FNS_DT
,(CASE WHEN ESH.SUBS_STTUS_CD IN ('02') THEN 'S' WHEN ESH.SUBS_STTUS_CD IN ('03','04') THEN 'P' ELSE 'E' END) AS STTUS_PLAG
,DATE_FORMAT(LAST_DAY(DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m01')),'%d') AS LAST_DT
FROM hubez_common.EZ_SUBS_INFO ESI, hubez_common.EZ_SBSCST_HST ESH
WHERE ESI.SUBS_ID = ESH.SUBS_ID
AND (DATE_FORMAT(EFCT_ST_DT,'%Y%m%d') <![CDATA[ < ]]> DATE_FORMAT(DATE_ADD(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),INTERVAL +1 MONTH),'%Y%m01'))
AND DATE_FORMAT(EFCT_FNS_DT,'%Y%m%d') <![CDATA[ > ]]> DATE_FORMAT(CONCAT(STR_TO_DATE(#{lmtYm},'%Y%m'),'01'),'%Y%m01')
AND ESH.SUBS_STTUS_CD NOT IN ('00','01','98')
) A
GROUP BY A.USER_SEQ
) USETB ON A.USER_SEQ = USETB.USER_SEQ
,hubez_common.EZ_CUST_INFO ECI, hubez_common.EZ_PROD_INFO EPI
WHERE A.CUST_SEQ = ECI.CUST_SEQ
AND A.PROD_CD = EPI.PROD_CD
AND A.CUST_SEQ NOT IN ('100000001','100000164')
) A
) A
ORDER BY ENTR_NO ASC
</select>
</mapper> </mapper>

View File

@@ -523,348 +523,4 @@
</if> </if>
</select> </select>
<select id="getVerificationList" resultType="kr.co.uplus.ez.api.sysMgt.dto.VerificationDto">
SELECT
CUST_NM
,A.BIZRNO
,A.ENTR_NO
,A.PROD_NM
,A.OPN_DT
,A.DAY_USER
,A.DTL_CD_NM
,A.SUCC_CNT
,A.FX_LMT_AMT
,A.LMT_PER_USE_DAY
,A.CFWD_AMT
,A.EXTNC_AMT
,A.EXTC_CHRG_AMT
,A.CFWD_CHRG_AMT
,A.EXTC_CHRG_RSRT
,A.CFWD_CHRG_RSRT
,A.EXTC_CHRG_BLNC
,A.CFWD_CHRG_BLNC
,FORMAT(A.MRT_USE_AMT,0) AS MRT_USE_AMT
,FORMAT(A.NOW_CFWD_AMT,0) AS NOW_CFWD_AMT
,CONCAT(IF(A.EST_CFWD_AMT <![CDATA[ < ]]> 0,'(과금)',''),FORMAT(ABS(A.EST_CFWD_AMT),0)) AS EST_CFWD_AMT
,IF((A.EST_CFWD_AMT <![CDATA[ < ]]> 0 AND (A.MRT_USE_AMT + A.EST_CFWD_AMT) = 0) OR (A.EST_CFWD_AMT = A.NOW_CFWD_AMT),'일치','불일치') AS RSLT_STR
,A.TOTAL_USE_AMT
,A.KKO_NOTI_USE_AMT
,A.SMS_USE_AMT
,A.LMS_USE_AMT
,A.MMS_USE_AMT
FROM (
SELECT
CUST_NM
,A.USER_SEQ
,A.CUST_SEQ
,A.SUBS_ID
,A.BIZRNO
,A.ENTR_NO
,A.PROD_CD
,A.PROD_NM
,A.OPN_DT
,A.SUBS_STTUS_CD
,A.DTL_CD_NM
,FORMAT(A.FX_LMT_AMT,1) AS FX_LMT_AMT
,FORMAT(A.CFWD_AMT,1) AS CFWD_AMT
,FORMAT(A.EXTNC_AMT,1) AS EXTNC_AMT
,FORMAT(A.CFWD_RSTRT_BLNC,1) AS CFWD_RSTRT_BLNC
,A.MRT_USE_AMT
,FORMAT(A.EXTC_CHRG_AMT,1) AS EXTC_CHRG_AMT
,FORMAT(A.CFWD_CHRG_AMT,1) AS CFWD_CHRG_AMT
,FORMAT(A.EXTC_CHRG_RSRT,1) AS EXTC_CHRG_RSRT
,FORMAT(A.CFWD_CHRG_RSRT,1) AS CFWD_CHRG_RSRT
,FORMAT(A.EXTC_CHRG_BLNC,1) AS EXTC_CHRG_BLNC
,FORMAT(A.CFWD_CHRG_BLNC,1) AS CFWD_CHRG_BLNC
,A.NOW_CFWD_AMT
,(CASE
WHEN A.SUBS_STTUS_CD = '99'
THEN 0
ELSE (IF(A.SUBS_STTUS_CD IN ('03','04') AND A.USE_DAY IS NULL,0,(ROUND((A.FX_LMT_AMT/LAST_DT)*IFNULL(A.USE_DAY,LAST_DT))))
+ A.CFWD_AMT - A.EXTNC_AMT - A.TOTAL_USE_AMT
+ (A.EXTC_CHRG_AMT - (A.EXTC_CHRG_RSRT+A.EXTC_CHRG_BLNC)) + (A.CFWD_CHRG_RSRT + A.CFWD_CHRG_BLNC))
END) AS EST_CFWD_AMT
,IF(A.SUBS_STTUS_CD IN ('03','04') AND A.USE_DAY IS NULL,0,(ROUND((A.FX_LMT_AMT/LAST_DT)*IFNULL(A.USE_DAY,LAST_DT)))) AS LMT_PER_USE_DAY
,A.TOTAL_USE_AMT
,A.KKO_NOTI_USE_AMT
,A.SMS_USE_AMT
,A.LMS_USE_AMT
,A.MMS_USE_AMT
,A.REQ_CNT
,A.SUCC_CNT
,A.SMS
,A.LMS
,A.MMS
,A.SMS_GLOBAL
,A.RCS
,A.KKO_NOTI
,A.KKO_FRIEND
,A.SMS_FB
,A.LMS_FB
,A.MMS_FB
,A.SMS_FAIL
,A.LMS_FAIL
,A.MMS_FAIL
,A.SMS_GLOBAL_FAIL
,A.RCS_FAIL
,A.KKO_NOTI_FAIL
,A.KKO_FRIEND_FAIL
,A.SMS_WAIT
,A.LMS_WAIT
,A.MMS_WAIT
,A.KKO_NOTI_WAIT
,A.USE_DAY
,IF(A.LAST_DT = A.USE_DAY,'비대상','대상') AS DAY_USER
FROM (
SELECT
ECI.CUST_NM
,ECI.BIZRNO
,A.ENTR_NO
,A.PROD_CD
,EPI.PROD_NM
,A.OPN_DT
,A.SUBS_STTUS_CD
,ECD.DTL_CD_NM
,ECI.CUST_SEQ
,A.USER_SEQ
,A.SUBS_ID
,A.FX_LMT_AMT
,A.CFWD_AMT
,A.EXTNC_AMT
,A.CFWD_RSTRT_BLNC
,A.MRT_USE_AMT
,A.NOW_CFWD_AMT
,A.EXTC_CHRG_AMT
,A.CFWD_CHRG_AMT
,A.EXTC_CHRG_RSRT
,A.CFWD_CHRG_RSRT
,A.EXTC_CHRG_BLNC
,A.CFWD_CHRG_BLNC
,((A.KKO_NOTI+A.KKO_NOTI_WAIT) * A.KKO_NOTI_COST) AS KKO_NOTI_USE_AMT
,((A.SMS+A.SMS_FB+A.SMS_WAIT) * A.SMS_COST) AS SMS_USE_AMT
,((A.LMS+A.LMS_FB+A.LMS_WAIT) * A.LMS_COST) AS LMS_USE_AMT
,((A.MMS+A.MMS_FB+A.MMS_WAIT) * A.MMS_COST) AS MMS_USE_AMT
,((A.KKO_NOTI+A.KKO_NOTI_WAIT) * A.KKO_NOTI_COST)
+((A.SMS+A.SMS_FB+A.SMS_WAIT) * A.SMS_COST)
+((A.LMS+A.LMS_FB+A.LMS_WAIT) * A.LMS_COST)
+((A.MMS+A.MMS_FB+A.MMS_WAIT) * A.MMS_COST) AS TOTAL_USE_AMT
,A.REQ_CNT
,(A.SMS + A.LMS + A.MMS + A.SMS_GLOBAL + A.RCS + A.KKO_NOTI + A.KKO_FRIEND + A.SMS_FB + A.LMS_FB + A.MMS_FB) AS SUCC_CNT
,A.SMS
,A.LMS
,A.MMS
,A.SMS_GLOBAL
,A.RCS
,A.KKO_NOTI
,A.KKO_FRIEND
,A.SMS_FB
,A.LMS_FB
,A.MMS_FB
,A.SMS_FAIL
,A.LMS_FAIL
,A.MMS_FAIL
,A.SMS_GLOBAL_FAIL
,A.RCS_FAIL
,A.KKO_NOTI_FAIL
,A.KKO_FRIEND_FAIL
,A.SMS_WAIT
,A.LMS_WAIT
,A.MMS_WAIT
,A.KKO_NOTI_WAIT
,A.KKO_NOTI_COST
,A.SMS_COST
,A.LMS_COST
,A.MMS_COST
,IF(USETB.USE_DAY <![CDATA[ < ]]> 0,NULL,USETB.USE_DAY) AS USE_DAY
,DATE_FORMAT(LAST_DAY(DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m01')),'%d') AS LAST_DT
FROM (
SELECT
LMT.USER_SEQ
,LMT.ENTR_NO
,LMT.PROD_CD
,LMT.OPN_DT
,LMT.SUBS_STTUS_CD
,LMT.FX_LMT_AMT
,LMT.CFWD_AMT
,LMT.EXTNC_AMT
,LMT.CFWD_RSTRT_BLNC
,LMT.MRT_USE_AMT
,LMT.NOW_CFWD_AMT
,LMT.EXTC_CHRG_AMT
,LMT.CFWD_CHRG_AMT
,LMT.EXTC_CHRG_RSRT
,LMT.CFWD_CHRG_RSRT
,LMT.EXTC_CHRG_BLNC
,LMT.CFWD_CHRG_BLNC
,LMT.KKO_NOTI_COST
,LMT.SMS_COST
,LMT.LMS_COST
,LMT.MMS_COST
,LMT.SUBS_ID
,MAX(LMT.CUST_SEQ) AS CUST_SEQ
,IFNULL(SUM(VRF.REQ_CNT),0) AS REQ_CNT
,IFNULL(SUM(VRF.SMS),0) AS SMS
,IFNULL(SUM(VRF.LMS),0) AS LMS
,IFNULL(SUM(VRF.MMS),0) AS MMS
,IFNULL(SUM(VRF.SMS_GLOBAL),0) AS SMS_GLOBAL
,IFNULL(SUM(VRF.RCS),0) AS RCS
,IFNULL(SUM(VRF.KKO_NOTI),0) AS KKO_NOTI
,IFNULL(SUM(VRF.KKO_FRIEND),0) AS KKO_FRIEND
,IFNULL(SUM(VRF.SMS_FB),0) AS SMS_FB
,IFNULL(SUM(VRF.LMS_FB),0) AS LMS_FB
,IFNULL(SUM(VRF.MMS_FB),0) AS MMS_FB
,IFNULL(SUM(VRF.SMS_FAIL),0) AS SMS_FAIL
,IFNULL(SUM(VRF.LMS_FAIL),0) AS LMS_FAIL
,IFNULL(SUM(VRF.MMS_FAIL),0) AS MMS_FAIL
,IFNULL(SUM(VRF.SMS_GLOBAL_FAIL),0) AS SMS_GLOBAL_FAIL
,IFNULL(SUM(VRF.RCS_FAIL),0) AS RCS_FAIL
,IFNULL(SUM(VRF.KKO_NOTI_FAIL),0) AS KKO_NOTI_FAIL
,IFNULL(SUM(VRF.KKO_FRIEND_FAIL),0) AS KKO_FRIEND_FAIL
,IFNULL(SUM(VRF.SMS_WAIT),0) AS SMS_WAIT
,IFNULL(SUM(VRF.LMS_WAIT),0) AS LMS_WAIT
,IFNULL(SUM(VRF.MMS_WAIT),0) AS MMS_WAIT
,IFNULL(SUM(VRF.KKO_NOTI_WAIT),0) AS KKO_NOTI_WAIT
FROM (
SELECT
ESI.USER_SEQ
,ESI.ENTR_NO
,IFNULL(EPR.PROD_CD,ESI.PROD_CD) AS PROD_CD
,ESU.CUST_SEQ
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m'),EUL.FX_LMT_AMT,0)) AS FX_LMT_AMT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m'),EUL.CFWD_AMT,0)) AS CFWD_AMT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(SYSDATE(),'%Y%m'),EUL.EXTNC_AMT,0)) AS EXTNC_AMT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m'),EUL.CFWD_RSTRT_BLNC,0)) AS CFWD_RSTRT_BLNC
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m'),EUL.MRT_USE_AMT,0)) AS MRT_USE_AMT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m'),EUL.EXTC_CHRG_AMT,0)) AS EXTC_CHRG_AMT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m'),EUL.CFWD_CHRG_AMT,0)) AS CFWD_CHRG_AMT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m'),EUL.EXTC_CHRG_RSRT,0)) AS EXTC_CHRG_RSRT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m'),EUL.CFWD_CHRG_RSRT,0)) AS CFWD_CHRG_RSRT
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m'),EUL.EXTC_CHRG_BLNC,0)) AS EXTC_CHRG_BLNC
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m'),EUL.CFWD_CHRG_BLNC,0)) AS CFWD_CHRG_BLNC
,SUM(IF(EUL.LMT_YM = DATE_FORMAT(SYSDATE(),'%Y%m'),EUL.CFWD_AMT,0)) AS NOW_CFWD_AMT
,ESC.KKO_NOTI_COST
,ESC.SMS_COST
,ESC.LMS_COST
,ESC.MMS_COST
,ESI.SUBS_ID
,DATE_FORMAT(ESI.OPN_DT,'%Y-%m-%d') AS OPN_DT
,ESI.SUBS_STTUS_CD
FROM hubez_common.EZ_SUBS_INFO ESI LEFT JOIN hubez_admin.EZ_USER_LMT EUL ON ESI.USER_SEQ = EUL.USER_SEQ AND EUL.LMT_YM BETWEEN DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m') AND DATE_FORMAT(SYSDATE(),'%Y%m')
INNER JOIN hubez_common.EZ_SVC_USER ESU ON ESI.USER_SEQ = ESU.USER_SEQ
LEFT JOIN (SELECT
SUBS_ID,PROD_CD
FROM hubez_common.EZ_PRDCHG_RSRV
WHERE (SUBS_ID,EFCT_ST_DT) IN (
SELECT
SUBS_ID, MAX(EFCT_ST_DT)
FROM hubez_common.EZ_PRDCHG_RSRV
WHERE TRT_STTUS_CD = '02'
AND DATE_FORMAT(EFCT_ST_DT,'%Y%m') = DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m')
GROUP BY SUBS_ID
)
) EPR ON ESI.SUBS_ID = EPR.SUBS_ID
, (
SELECT
SUM(IF(ESC.SND_CH_CD = 'ALIMTALK',UCOST,0)) AS KKO_NOTI_COST
,SUM(IF(ESC.SND_CH_CD = 'SMS',UCOST,0)) AS SMS_COST
,SUM(IF(ESC.SND_CH_CD = 'LMS',UCOST,0)) AS LMS_COST
,SUM(IF(ESC.SND_CH_CD = 'MMS',UCOST,0)) AS MMS_COST
FROM hubez_common.EZ_SND_UCOST ESC
) ESC
WHERE ESI.SUBS_STTUS_CD IN ('02','03','04','99')
AND ESI.OPN_DT <![CDATA[ < ]]> DATE_FORMAT(SYSDATE(),'%Y%m01')
GROUP BY ESI.USER_SEQ
) LMT
LEFT JOIN (
SELECT
A.WEB_REQ_ID
,A.USER_SEQ
,A.REQ_CNT
,A.SNDREQ_CH_CD
,A.SMS
,A.LMS
,A.MMS
,A.SMS_GLOBAL
,A.RCS
,A.KKO_NOTI
,A.KKO_FRIEND
,A.SMS_FB
,A.LMS_FB
,A.MMS_FB
,A.SMS_FAIL
,A.LMS_FAIL
,A.MMS_FAIL
,A.SMS_GLOBAL_FAIL
,A.RCS_FAIL
,A.KKO_NOTI_FAIL
,A.KKO_FRIEND_FAIL
,IF(A.SNDREQ_CH_CD = 'SMS',(A.REQ_CNT)-(A.SMS+A.SMS_FAIL),0) AS SMS_WAIT
,IF(A.SNDREQ_CH_CD = 'LMS',(A.REQ_CNT)-(A.LMS+A.LMS_FAIL),0) AS LMS_WAIT
,IF(A.SNDREQ_CH_CD = 'MMS',(A.REQ_CNT)-(A.MMS+A.MMS_FAIL),0) AS MMS_WAIT
,IF(A.SNDREQ_CH_CD = 'ALIMTALK',(A.REQ_CNT)-(A.KKO_NOTI+A.KKO_NOTI_FAIL+KKO_NOTI_FW_FB_CNT),0) AS KKO_NOTI_WAIT
FROM (
SELECT
ESR.WEB_REQ_ID
,ESR.USER_SEQ
,ESR.REQ_CNT
,ESR.SNDREQ_CH_CD
,SUM(IF((EML.DONE_CODE = 10000 OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'SMS', 1, 0)) AS SMS
,SUM(IF((EML.DONE_CODE = 10000 OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'LMS', 1, 0)) AS LMS
,SUM(IF((EML.DONE_CODE = 10000 OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'MMS', 1, 0)) AS MMS
,SUM(IF((EML.DONE_CODE = 10000 OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'SMS_GLOBAL', 1, 0)) AS SMS_GLOBAL
,SUM(IF(((EML.DONE_CODE = 10000 AND EML.DONE_PRODUCT = 'RCS') OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'RCS', 1, 0)) AS RCS
,SUM(IF(((EML.DONE_CODE = 10000 AND EML.DONE_PRODUCT = 'KALT1') OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'KKO_NOTI', 1, 0)) AS KKO_NOTI
,SUM(IF(((EML.DONE_CODE = 10000 AND EML.DONE_PRODUCT = 'KALT2') OR DRSLT_CMPLT_DT IS NULL) AND EML.REQ_PRODUCT = 'KKO_FRIEND', 1, 0)) AS KKO_FRIEND
,SUM(IF(EML.DONE_CODE = 10000 AND EML.REQ_PRODUCT IN ('RCS','KKO_NOTI','KKO_FRIEND') AND EML.DONE_PRODUCT = 'SMS', 1, 0)) AS SMS_FB
,SUM(IF(EML.DONE_CODE = 10000 AND EML.REQ_PRODUCT IN ('RCS','KKO_NOTI','KKO_FRIEND') AND EML.DONE_PRODUCT = 'LMS', 1, 0)) AS LMS_FB
,SUM(IF(EML.DONE_CODE = 10000 AND EML.REQ_PRODUCT IN ('RCS','KKO_NOTI','KKO_FRIEND') AND EML.DONE_PRODUCT = 'MMS', 1, 0)) AS MMS_FB
,SUM(IF((EML.DONE_CODE = 10000 AND EML.DONE_PRODUCT != 'RCS') AND EML.REQ_PRODUCT = 'RCS', 1, 0)) AS RCS_FW_FB_CNT
,SUM(IF((EML.DONE_CODE = 10000 AND EML.DONE_PRODUCT != 'KALT1') AND EML.REQ_PRODUCT = 'KKO_NOTI', 1, 0)) AS KKO_NOTI_FW_FB_CNT
,SUM(IF((EML.DONE_CODE = 10000 AND EML.DONE_PRODUCT != 'KALT2') AND EML.REQ_PRODUCT = 'KKO_FRIEND', 1, 0)) AS KKO_FRIEND_FW_FB_CNT
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'SMS', 1, 0)) AS SMS_FAIL
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'LMS', 1, 0)) AS LMS_FAIL
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'MMS', 1, 0)) AS MMS_FAIL
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'SMS_GLOBAL', 1, 0)) AS SMS_GLOBAL_FAIL
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'RCS', 1, 0)) AS RCS_FAIL
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'KKO_NOTI', 1, 0)) AS KKO_NOTI_FAIL
,SUM(IF(EML.DONE_CODE != 10000 AND ESR.DRSLT_CMPLT_DT IS NOT NULL AND EML.REQ_PRODUCT = 'KKO_FRIEND', 1, 0)) AS KKO_FRIEND_FAIL
FROM hubez_admin.EZ_SNDDCT_REQ PARTITION(EZ_SNDDCT_REQ_202306) ESR LEFT OUTER JOIN hubez_send.EZ_MSG_LOG PARTITION(PT_EZ_MSG_LOG_202306) EML ON ESR.WEB_REQ_ID = EML.WEB_REQ_ID
GROUP BY ESR.WEB_REQ_ID ,ESR.USER_SEQ ,ESR.REQ_CNT
) A
) VRF ON LMT.USER_SEQ = VRF.USER_SEQ
GROUP BY LMT.USER_SEQ
) A LEFT JOIN hubez_common.EZ_CD_DTL ECD ON A.SUBS_STTUS_CD = ECD.DTL_CD AND ECD.GRP_CD = 'SUBS_STTUS_CD'
LEFT JOIN (
SELECT
A.USER_SEQ
,SUM(CASE
WHEN A.STTUS_PLAG = 'S' THEN A.EFCT_FNS_DT - A.EFCT_ST_DT + 1
WHEN A.STTUS_PLAG = 'P' THEN -1
WHEN A.STTUS_PLAG = 'E' THEN 0
END) AS USE_DAY
FROM (
SELECT
ESI.CUST_SEQ
,ESI.USER_SEQ
,ESI.SUBS_ID
,IF(DATE_FORMAT(ESH.EFCT_ST_DT,'%Y%m') != DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m'),'01',DATE_FORMAT(ESH.EFCT_ST_DT,'%d')) AS EFCT_ST_DT
,IF(ESH.EFCT_FNS_DT <![CDATA[ > ]]> LAST_DAY(DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m%d')) ,DATE_FORMAT(LAST_DAY(DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m%d')),'%d'),DATE_FORMAT(ESH.EFCT_FNS_DT,'%d')) AS EFCT_FNS_DT
,(CASE WHEN ESH.SUBS_STTUS_CD IN ('02') THEN 'S' WHEN ESH.SUBS_STTUS_CD IN ('03','04') THEN 'P' ELSE 'E' END) AS STTUS_PLAG
,DATE_FORMAT(LAST_DAY(DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m%d')),'%d') AS LAST_DT
FROM hubez_common.EZ_SUBS_INFO ESI, hubez_common.EZ_SBSCST_HST ESH
WHERE ESI.SUBS_ID = ESH.SUBS_ID
AND (DATE_FORMAT(EFCT_ST_DT,'%Y%m%d') <![CDATA[ < ]]> DATE_FORMAT(SYSDATE(),'%Y%m01')
AND DATE_FORMAT(EFCT_FNS_DT,'%Y%m%d') <![CDATA[ > ]]> DATE_FORMAT(DATE_ADD(SYSDATE(),INTERVAL -1 MONTH),'%Y%m01'))
AND ESH.SUBS_STTUS_CD NOT IN ('00','01','98')
) A
GROUP BY A.USER_SEQ
) USETB ON A.USER_SEQ = USETB.USER_SEQ
,hubez_common.EZ_CUST_INFO ECI, hubez_common.EZ_PROD_INFO EPI
WHERE A.CUST_SEQ = ECI.CUST_SEQ
AND A.PROD_CD = EPI.PROD_CD
AND A.CUST_SEQ NOT IN ('100000001','100000164')
) A
) A
ORDER BY ENTR_NO ASC
</select>
</mapper> </mapper>