리스크관리 / 발송통계 추가

This commit is contained in:
kimre
2022-06-29 17:52:26 +09:00
parent 056ccf20e1
commit 0a2e30b1c2
32 changed files with 2864 additions and 992 deletions

View File

@@ -23,5 +23,6 @@ public class ZezNumIntrcpList implements Serializable {
private String regDt;
@ApiModelProperty(example = "등록구분", name = "등록구분", dataType = "String")
private String regTpCd;
@ApiModelProperty(hidden = true)
private String userId;
}

View File

@@ -12,9 +12,12 @@ import kr.co.uplus.ez.api.sendNumMgt.dto.*;
import kr.co.uplus.ez.common.components.ValidComponents;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ApiResponseMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
@@ -24,6 +27,8 @@ import java.util.Map;
@RequestMapping(value = "api/v1/bo/sendNumMgt")
public class SendNumMgtController {
private static final Logger logger = LoggerFactory.getLogger(SendNumMgtController.class);
@Autowired
SendNumMgtService sendNumService;
@@ -94,13 +99,8 @@ public class SendNumMgtController {
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "insertNumber", method = { RequestMethod.POST })
@ResponseBody
public InsertNumberResDto insertNumber(@RequestBody @Valid InsertNumberReqDto insertNumberReqDto, BindingResult bindingResult) {
if (validComponents.validParameter(bindingResult)) {
return new InsertNumberResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return sendNumService.insertNumber(insertNumberReqDto);
public InsertNumberResDto insertNumber(@RequestPart(value = "key") InsertNumberReqDto insertNumberReqDto, MultipartHttpServletRequest multipartRequest) {
return sendNumService.insertNumber(insertNumberReqDto, multipartRequest);
}
/**

View File

@@ -5,11 +5,13 @@ import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ApiResponseMessage;
import kr.co.uplus.ez.common.data.Paging;
import kr.co.uplus.ez.common.utils.FileUtil;
import org.apache.commons.lang3.StringUtils;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import java.io.File;
import java.util.ArrayList;
@@ -28,7 +30,8 @@ public class SendNumMgtService {
@Qualifier("sqlSessionTemplateDb2")
private SqlSessionTemplate sqlSessionSlave;
@Value("${file-resource.info.sendNumber.path:/efs/admin/sendNumber/}")
private String sendNumUploadPath;
/**
* date : 2022. 4. 25.
* auth : ckr
@@ -138,145 +141,161 @@ public class SendNumMgtService {
* @param paramMap
* @return
*/
public InsertNumberResDto insertNumber(InsertNumberReqDto insertNumberReqDto) {
public InsertNumberResDto insertNumber(InsertNumberReqDto insertNumberReqDto, MultipartHttpServletRequest multipartRequest) {
FileUtil fileUtil = new FileUtil();
SendNumMgtMapper sendNumMgtMapper = sqlSessionSlave.getMapper(SendNumMgtMapper.class);
String adminId = insertNumberReqDto.getAdminId();
String userSeq = sendNumMgtMapper.selectUserSeqByAdminId(adminId);
if(StringUtils.equals("01", insertNumberReqDto.getNmineeDivCd())){
File tenureFile = (File) multipartRequest.getFile("tenureFile");
File businessFile = (File) multipartRequest.getFile("businessFile");
File communicationFile = (File) multipartRequest.getFile("communicationFile");
insertNumberReqDto.setUserSeq(userSeq);
insertNumberReqDto.setReqCnt(insertNumberReqDto.getList().size()+1);
try {
// 1. EZ_SNDRNO_REG
sendNumMgtMapper.insertNumber(insertNumberReqDto);
String path = "C:/hubeasyfiles/sndrNo/"+insertNumberReqDto.getAdminId();
File dir = new File(path);
if(!dir.isDirectory()) {
dir.mkdirs();
}
for(int i=0;i<insertNumberReqDto.getAuthSendNum().size();i++) {
String docTpCd = "";
if(insertNumberReqDto.getAuthSendNum().size() == 2) { //서류 유형코드 구분
switch(i){
case 0:
docTpCd = "08"; // 통신서비스 이용 증명원
break;
case 1:
docTpCd = "07"; //재직증명서
break;
default:
docTpCd = "00";
break;
}
}
else if(insertNumberReqDto.getAuthSendNum().size() == 4) {//서류 유형코드 구분
switch(i){
case 0:
docTpCd = "03"; //위임수임관계확인서류
break;
case 1:
docTpCd = "04"; //위임장
break;
case 2:
docTpCd = "05"; //대리인 신분증 사본 인증
break;
case 3:
docTpCd = "07"; //재직증명서
break;
default:
docTpCd = "00";
break;
}
}
path += path +"/"+ docTpCd;
InsertNumberFile insertFile = new InsertNumberFile();
MultipartFile file = insertNumberReqDto.getAuthSendNum().get(i);
String docTitle = file.getName();
String fileNm = file.getOriginalFilename();
String filePath = path+"/"+file.getOriginalFilename();
long fileSize = file.getSize();
String regId = insertNumberReqDto.getRegId();
if(!fileUtil.upload(file, docTitle, path)) {//파일저장
return new InsertNumberResDto(ApiResponseCode.CM_DB_QUERY_ERR);//파일저장 실패시
}
//파일저장 성공시 insert
insertFile.setRegReqNo(insertNumberReqDto.getRegReqNo());
insertFile.setDocTpCd(docTpCd);
insertFile.setDocTitle(docTitle);
insertFile.setFileNm(fileNm);
insertFile.setFilePath(filePath);
insertFile.setFileSize(fileSize);
insertFile.setRegId(regId);
// 2. EZ_SNDRNO_DOC
sendNumMgtMapper.insertNumberDoc(insertFile);
}
for(int j=0;j<insertNumberReqDto.getAuthBsns().size();j++) {
String docTpCd = "";
switch(j){//서류 유형코드 구분
case 0:
docTpCd = "06"; //사업자등록증
break;
default:
docTpCd = "00";
break;
}
path += path +"/"+ docTpCd;
InsertNumberFile insertFile = new InsertNumberFile();
MultipartFile file = insertNumberReqDto.getAuthSendNum().get(j);
String docTitle = file.getName();
String fileNm = file.getOriginalFilename();
String filePath = path+"/"+file.getOriginalFilename();
long fileSize = file.getSize();
String regId = insertNumberReqDto.getRegId();
if(!fileUtil.upload(file, docTitle, path)) {//파일저장
return new InsertNumberResDto(ApiResponseCode.SE_UNKNOWN);// 파일저장 실패하면
}
insertFile.setRegReqNo(insertNumberReqDto.getRegReqNo());
insertFile.setDocTpCd(docTpCd);
insertFile.setDocTitle(docTitle);
insertFile.setFileNm(fileNm);
insertFile.setFilePath(filePath);
insertFile.setFileSize(fileSize);
insertFile.setRegId(regId);
// 3. EZ_SVC_SNDRNO
sendNumMgtMapper.insertNumberDoc(insertFile);
}
for(int k=0;k<insertNumberReqDto.getList().size();k++) {
InsertNumber insertNumber = insertNumberReqDto.getList().get(k);
insertNumber.setCustSeq(insertNumberReqDto.getUserSeq());
insertNumber.setRegReqNo(insertNumberReqDto.getRegReqNo());
insertNumber.setNmineeDivCd(insertNumberReqDto.getNmineeDivCd());
insertNumber.setInchDivCd(insertNumberReqDto.getInchDivCd());
sendNumMgtMapper.insertNumberList(insertNumber);
}
} catch (Exception e) {
return new InsertNumberResDto(ApiResponseCode.CM_DB_QUERY_ERR);
}else{
File trustFile = (File) multipartRequest.getFile("trustFile");
File warrantFile = (File) multipartRequest.getFile("warrantFile");
File deputyFile = (File) multipartRequest.getFile("deputyFile");
File tenureFile = (File) multipartRequest.getFile("tenureFile");
File businessFile = (File) multipartRequest.getFile("businessFile");
}
// 1. 발신번호 등록
// sendNumUploadPath
// 2. 발신번호 등록용 파일.
// String userSeq = sendNumMgtMapper.selectUserSeqByAdminId(adminId);
//
// insertNumberReqDto.setUserSeq(userSeq);
// insertNumberReqDto.setReqCnt(insertNumberReqDto.getList().size()+1);
// try {
// // 1. EZ_SNDRNO_REG
// sendNumMgtMapper.insertNumber(insertNumberReqDto);
//
// String path = "C:/hubeasyfiles/sndrNo/"+insertNumberReqDto.getAdminId();
// File dir = new File(path);
// if(!dir.isDirectory()) {
// dir.mkdirs();
// }
//
// for(int i=0;i<insertNumberReqDto.getAuthSendNum().size();i++) {
//
// String docTpCd = "";
//
// if(insertNumberReqDto.getAuthSendNum().size() == 2) { //서류 유형코드 구분
// switch(i){
// case 0:
// docTpCd = "08"; // 통신서비스 이용 증명원
// break;
// case 1:
// docTpCd = "07"; //재직증명서
// break;
// default:
// docTpCd = "00";
// break;
// }
// }
// else if(insertNumberReqDto.getAuthSendNum().size() == 4) {//서류 유형코드 구분
// switch(i){
// case 0:
// docTpCd = "03"; //위임수임관계확인서류
// break;
// case 1:
// docTpCd = "04"; //위임장
// break;
// case 2:
// docTpCd = "05"; //대리인 신분증 사본 인증
// break;
// case 3:
// docTpCd = "07"; //재직증명서
// break;
// default:
// docTpCd = "00";
// break;
// }
// }
//
// path += path +"/"+ docTpCd;
//
// InsertNumberFile insertFile = new InsertNumberFile();
//
// MultipartFile file = insertNumberReqDto.getAuthSendNum().get(i);
// String docTitle = file.getName();
// String fileNm = file.getOriginalFilename();
// String filePath = path+"/"+file.getOriginalFilename();
// long fileSize = file.getSize();
// String regId = insertNumberReqDto.getRegId();
//
//
// if(!fileUtil.upload(file, docTitle, path)) {//파일저장
// return new InsertNumberResDto(ApiResponseCode.CM_DB_QUERY_ERR);//파일저장 실패시
// }
// //파일저장 성공시 insert
// insertFile.setRegReqNo(insertNumberReqDto.getRegReqNo());
// insertFile.setDocTpCd(docTpCd);
// insertFile.setDocTitle(docTitle);
// insertFile.setFileNm(fileNm);
// insertFile.setFilePath(filePath);
// insertFile.setFileSize(fileSize);
// insertFile.setRegId(regId);
//
// // 2. EZ_SNDRNO_DOC
// sendNumMgtMapper.insertNumberDoc(insertFile);
// }
// for(int j=0;j<insertNumberReqDto.getAuthBsns().size();j++) {
//
// String docTpCd = "";
//
// switch(j){//서류 유형코드 구분
// case 0:
// docTpCd = "06"; //사업자등록증
// break;
// default:
// docTpCd = "00";
// break;
// }
//
// path += path +"/"+ docTpCd;
//
// InsertNumberFile insertFile = new InsertNumberFile();
//
// MultipartFile file = insertNumberReqDto.getAuthSendNum().get(j);
// String docTitle = file.getName();
// String fileNm = file.getOriginalFilename();
// String filePath = path+"/"+file.getOriginalFilename();
// long fileSize = file.getSize();
// String regId = insertNumberReqDto.getRegId();
//
//
// if(!fileUtil.upload(file, docTitle, path)) {//파일저장
// return new InsertNumberResDto(ApiResponseCode.SE_UNKNOWN);// 파일저장 실패하면
// }
//
// insertFile.setRegReqNo(insertNumberReqDto.getRegReqNo());
// insertFile.setDocTpCd(docTpCd);
// insertFile.setDocTitle(docTitle);
// insertFile.setFileNm(fileNm);
// insertFile.setFilePath(filePath);
// insertFile.setFileSize(fileSize);
// insertFile.setRegId(regId);
// // 3. EZ_SVC_SNDRNO
// sendNumMgtMapper.insertNumberDoc(insertFile);
// }
//
// for(int k=0;k<insertNumberReqDto.getList().size();k++) {
// InsertNumber insertNumber = insertNumberReqDto.getList().get(k);
//
// insertNumber.setCustSeq(insertNumberReqDto.getUserSeq());
// insertNumber.setRegReqNo(insertNumberReqDto.getRegReqNo());
// insertNumber.setNmineeDivCd(insertNumberReqDto.getNmineeDivCd());
// insertNumber.setInchDivCd(insertNumberReqDto.getInchDivCd());
//
// sendNumMgtMapper.insertNumberList(insertNumber);
// }
// } catch (Exception e) {
// return new InsertNumberResDto(ApiResponseCode.CM_DB_QUERY_ERR);
// }
return new InsertNumberResDto(ApiResponseCode.SUCCESS);
}

View File

@@ -1,11 +1,11 @@
package kr.co.uplus.ez.api.sendNumMgt.dto;
import java.io.Serializable;
import java.util.List;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@SuppressWarnings("serial")
@Data
public class DetailNumber implements Serializable{
@@ -14,16 +14,25 @@ public class DetailNumber implements Serializable{
private String adminId;
@ApiModelProperty(example = "고객사명(이름)", name = "고객사명(이름)", dataType = "String")
private String custNm;
@ApiModelProperty(example = "사업자번호(생년월일)", name = "사업자번호(생년월일)", dataType = "String")
@ApiModelProperty(example = "등록자ID", name = "등록자ID", dataType = "String")
private String register;
@ApiModelProperty(example = "사업자번호", name = "사업자번호", dataType = "String")
private String bRegNo;
@ApiModelProperty(example = "발신번호", name = "발신번호", dataType = "String")
private String regNo;
@ApiModelProperty(example = "명의자 구분", name = "명의자 구분", dataType = "String")
private String nmineeDivCd;
@ApiModelProperty(example = "인입채널", name = "인입채널", dataType = "String")
private String inchDivCd;
@ApiModelProperty(example = "발신번호명", name = "발신번호명", dataType = "String")
private String sndrnoNm;
@ApiModelProperty(example = "발신번호", name = "발신번호", dataType = "String")
private String sndrno;
@ApiModelProperty(example = "상태", name = "상태", dataType = "String")
private String sttusCd;
@ApiModelProperty(example = "등록일자", name = "등록일자", dataType = "String")
private String regDt;
private List<AuthFileInfo> list;
@ApiModelProperty(example = "등록요청번호", name = "등록요청번호", dataType = "String", hidden=true)
private String regRegNo;
}

View File

@@ -1,18 +1,18 @@
package kr.co.uplus.ez.api.sendNumMgt.dto;
import java.io.Serializable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class DetailNumberReqDto implements Serializable{
@ApiModelProperty(example = "등록번호", name = "등록번호", dataType = "String")
private String regNo;
private String regReqNo;
@ApiModelProperty(example = "관리자 ID", name = "관리자 ID", dataType = "String")
private String adminId;
@ApiModelProperty(example = "발신번호", name = "발신번호", dataType = "String")
private String sndrno;
}

View File

@@ -31,5 +31,7 @@ public class SendNumberInfo implements Serializable{
private String regTpCd;
@ApiModelProperty(example = "등록일", name = "등록일", notes = "YYYY-MM-DD", dataType = "String")
private String regDt;
@ApiModelProperty(example = "발신번호등록번호", name = "발신번호등록번호", dataType = "String")
private String regReqNo;
}

View File

@@ -152,6 +152,7 @@
, eci.BIZRNO
, er.AUTHCD_080
, er.RCVBLCKNO
, esu.USER_ID
, DATE_FORMAT(er.REG_DT, '%Y-%m-%d') AS REG_DT
,(
SELECT
@@ -266,6 +267,7 @@
</select>
<select id="selectMsgBlckWordSeq" resultType="String">
/* riskMgt-mapper.xml(selectMsgBlckWordSeq) */
SELECT ${HUBEZ_COMMON}.FUN_NEXT_SEQ('MSG_BLCKWORD_SEQ')
</select>

View File

@@ -347,37 +347,76 @@
</insert>
<select id="detailNumber" parameterType="kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumberReqDto" resultType="kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumber">
/* sendNumMgt-mapper.xml(detailNumber) */
SELECT
esu.USER_ID AS adminId
,eci.CUST_NM AS custNm
,eci.BIZRNO AS bRegNo
,esr.REG_REQ_NO AS regReqNo
,ess.NMINEE_DIV_CD AS nmineeDivCd
FROM
${HUBEZ_COMMON}.EZ_SVC_USER esu
LEFT JOIN ${HUBEZ_COMMON}.EZ_CUST_INFO eci
ON esu.CUST_SEQ = eci.CUST_SEQ
LEFT JOIN ${HUBEZ_COMMON}.EZ_SNDRNO_REG esr
ON esu.USER_SEQ = esr.USER_SEQ
LEFT JOIN ${HUBEZ_COMMON}.EZ_SVC_SNDRNO ess
ON esr.REG_REQ_NO = ess.REG_REQ_NO
WHERE
esu.USER_ID = #{adminId}
AND ess.SNDRNO = #{regNo}
/* sendNumMgt-mapper.xml(detailNumber) */
SELECT
eci.CUST_NM AS custNm
, ess.SNDRNO
, esu.USER_ID AS adminId
, ess.REG_ID AS register
, eci.BIZRNO AS bRegNo
, ess.SNDRNO_NM
, ess.SNDRNO
, esr.REG_REQ_NO
,(
SELECT
ecd.DTL_CD_NM
FROM
hubez_common.EZ_CD_DTL ecd
WHERE
ecd.GRP_CD = 'NMINEE_DIV_CD'
AND ecd.DTL_CD = ess.NMINEE_DIV_CD) AS nmineeDivCd
,(
SELECT
ecd.DTL_CD_NM
FROM
hubez_common.EZ_CD_DTL ecd
WHERE
ecd.GRP_CD = 'INCH_DIV_CD'
AND ecd.DTL_CD = ess.INCH_DIV_CD) AS inchDivCd
,(
SELECT
ecd.DTL_CD_NM
FROM
hubez_common.EZ_CD_DTL ecd
WHERE
ecd.GRP_CD = 'SNDRNO_STTUS_CD'
AND ecd.DTL_CD = ess.STTUS_CD) AS sttusCd
,(
SELECT
ecd.DTL_CD_NM
FROM
hubez_common.EZ_CD_DTL ecd
WHERE
ecd.GRP_CD = 'SNDRNO_REG_TP_CD'
AND ecd.DTL_CD = ess.REG_TP_CD) AS regTpCd
, DATE_FORMAT(ess.REG_DT, '%Y-%m-%d') AS regDt
FROM
hubez_common.EZ_CUST_INFO eci
INNER JOIN hubez_common.EZ_SVC_USER esu
ON
eci.CUST_SEQ = esu.CUST_SEQ
INNER JOIN hubez_common.EZ_SNDRNO_REG esr
ON
esu.USER_SEQ = esr.USER_SEQ
INNER JOIN hubez_common.EZ_SVC_SNDRNO ess
ON
eci.CUST_SEQ = ess.CUST_SEQ
WHERE 1 = 1
AND ess.SNDRNO = #{sndrno}
AND esr.REG_REQ_NO = #{regReqNo}
</select>
<select id="selectAuthFileList" parameterType="kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumberReqDto" resultType="kr.co.uplus.ez.api.sendNumMgt.dto.AuthFileInfo">
/* sendNumMgt-mapper.xml(selectAuthFileList) */
SELECT
DOC_TP_CD AS docTpCd
,DOC_TITLE AS docTitle
,FILE_NM AS fileNm
,FILE_PATH AS filePath
,FILE_SIZE AS fileSize
FROM
${HUBEZ_COMMON}.EZ_SNDRNO_DOC
WHERE
REG_REQ_NO = #{regReqNo}
/* sendNumMgt-mapper.xml(selectAuthFileList) */
SELECT
DOC_TP_CD AS docTpCd
,DOC_TITLE AS docTitle
,FILE_NM AS fileNm
,FILE_PATH AS filePath
,FILE_SIZE AS fileSize
FROM
${HUBEZ_COMMON}.EZ_SNDRNO_DOC
WHERE
REG_REQ_NO = #{regReqNo}
</select>
</mapper>

View File

@@ -5,253 +5,691 @@
<select id="selectMonStatList" parameterType="kr.co.uplus.ez.api.stats.dto.MonthListReqDto" resultType="kr.co.uplus.ez.api.stats.dto.MonthList">
SELECT
ems.SUM_YM
, ems.SND_CNT
, ems.SUCC_CNT
, ems.SUCC_RT
, S.SND_CNT AS SND_CNT_S
, S.SUCC_CNT AS SUCC_CNT_S
, S.SUCC_RT AS SUCC_RT_S
, L.SND_CNT AS SND_CNT_L
, L.SUCC_CNT AS SUCC_CNT_L
, L.SUCC_RT AS SUCC_RT_L
, M.SND_CNT AS SND_CNT_M
, M.SUCC_CNT AS SUCC_CNT_M
, M.SUCC_RT AS SUCC_RT_M
, R.SND_CNT AS SND_CNT_R
, R.SUCC_CNT AS SUCC_CNT_R
, R.SUCC_RT AS SUCC_RT_R
SELECT * FROM (
SELECT
'전체' AS sumYm
, IFNULL(ecm1.SND_CNT,0) AS sndCnt
, IFNULL(ecm1.SUCC_CNT,0) AS succCnt
, IFNULL(ecm1.SUCC_RT,0) AS succRt
, IFNULL(S1.SND_CNT,0) AS sndCntS
, IFNULL(S1.SUCC_CNT,0) AS succCntS
, IFNULL(S1.SUCC_RT,0) AS succRtS
, IFNULL(L1.SND_CNT,0) AS sndCntL
, IFNULL(L1.SUCC_CNT,0) AS succCntL
, IFNULL(L1.SUCC_RT,0) AS succRtL
, IFNULL(M1.SND_CNT,0) AS sndCntM
, IFNULL(M1.SUCC_CNT,0) AS succCntM
, IFNULL(M1.SUCC_RT,0) AS succRtM
, IFNULL(A1.SND_CNT,0) AS sndCntR
, IFNULL(A1.SUCC_CNT,0) AS succCntR
, IFNULL(A1.SUCC_RT,0) AS succRtR
FROM
hubez_common.EZ_MON_STAT ems
JOIN (
(SELECT
SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_MON_STAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
) ecm1,
(
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
hubez_common.EZ_MON_STAT
WHERE
SND_CH_CD = 'SMS') AS S
JOIN (
${HUBEZ_COMMON}.EZ_MON_STAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'SMS'
) S1,
(
SELECT
SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_MON_STAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'LMS'
) L1,
(
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
hubez_common.EZ_MON_STAT
WHERE
SND_CH_CD = 'MMS') AS M
JOIN (
${HUBEZ_COMMON}.EZ_MON_STAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'MMS'
) M1,
(
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
FROM
hubez_common.EZ_MON_STAT
WHERE
SND_CH_CD = 'LMS') AS L
JOIN (
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
FROM
hubez_common.EZ_MON_STAT
WHERE
SND_CH_CD = 'RCS') AS R
WHERE DATE_FORMAT(ems.SUM_YM, '%Y%m') BETWEEN #{startMon} AND #{endMon}
ORDER BY ems.SUM_YM DESC
SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100),2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_MON_STAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'ALIMTALK'
) A1
UNION ALL
SELECT
DATE_FORMAT(ecm.SUM_YM, '%Y-%m') AS sumYm
, ecm.SND_CNT AS sndCnt
, ecm.SUCC_CNT AS succCnt
, ecm.SUCC_RT AS succRt
, S.SND_CNT AS sndCntS
, S.SUCC_CNT AS succCntS
, S.SUCC_RT AS succRtS
, L.SND_CNT AS sndCntL
, L.SUCC_CNT AS succCntL
, L.SUCC_RT AS succRtL
, M.SND_CNT AS sndCntM
, M.SUCC_CNT AS succCntM
, M.SUCC_RT AS succRtM
, A.SND_CNT AS sndCntR
, A.SUCC_CNT AS succCntR
, A.SUCC_RT AS succRtR
FROM
(SELECT
SUM_YM
,SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_MON_STAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
GROUP BY SUM_YM ) ecm,
(SELECT
SUM_YM
,SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_MON_STAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'SMS'
GROUP BY SUM_YM ) S,
(SELECT
SUM_YM
,SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_MON_STAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'LMS'
GROUP BY SUM_YM ) L,
( SELECT
SUM_YM
,SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_MON_STAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'MMS'
GROUP BY SUM_YM ) M,
( SELECT
SUM_YM
,SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100),2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_MON_STAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'ALIMTALK'
GROUP BY SUM_YM ) A
WHERE 1=1
AND ecm.SUM_YM = S.SUM_YM
AND ecm.SUM_YM = L.SUM_YM
AND ecm.SUM_YM = M.SUM_YM
AND ecm.SUM_YM = A.SUM_YM
) T
ORDER BY sumYm DESC
</select>
<select id="selectDayStatList" parameterType="kr.co.uplus.ez.api.stats.dto.DayListReqDto" resultType="kr.co.uplus.ez.api.stats.dto.DayList">
SELECT
eds.SUM_YMD
, eds.SND_CNT
, eds.SUCC_CNT
, eds.SUCC_RT
, S.SND_CNT AS SND_CNT_S
, S.SUCC_CNT AS SUCC_CNT_S
, S.SUCC_RT AS SUCC_RT_S
, L.SND_CNT AS SND_CNT_L
, L.SUCC_CNT AS SUCC_CNT_L
, L.SUCC_RT AS SUCC_RT_L
, M.SND_CNT AS SND_CNT_M
, M.SUCC_CNT AS SUCC_CNT_M
, M.SUCC_RT AS SUCC_RT_M
, R.SND_CNT AS SND_CNT_R
, R.SUCC_CNT AS SUCC_CNT_R
, R.SUCC_RT AS SUCC_RT_R
SELECT * FROM (
SELECT
'전체' AS sumYmd
, IFNULL(ecm1.SND_CNT,0) AS sndCnt
, IFNULL(ecm1.SUCC_CNT,0) AS succCnt
, IFNULL(ecm1.SUCC_RT,0) AS succRt
, IFNULL(S1.SND_CNT,0) AS sndCntS
, IFNULL(S1.SUCC_CNT,0) AS succCntS
, IFNULL(S1.SUCC_RT,0) AS succRtS
, IFNULL(L1.SND_CNT,0) AS sndCntL
, IFNULL(L1.SUCC_CNT,0) AS succCntL
, IFNULL(L1.SUCC_RT,0) AS succRtL
, IFNULL(M1.SND_CNT,0) AS sndCntM
, IFNULL(M1.SUCC_CNT,0) AS succCntM
, IFNULL(M1.SUCC_RT,0) AS succRtM
, IFNULL(A1.SND_CNT,0) AS sndCntR
, IFNULL(A1.SUCC_CNT,0) AS succCntR
, IFNULL(A1.SUCC_RT,0) AS succRtR
FROM
hubez_common.EZ_DAY_STAT eds
JOIN (
(SELECT
SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_DAY_STAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
) ecm1,
(
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
hubez_common.EZ_DAY_STAT
WHERE
SND_CH_CD = 'SMS') AS S
JOIN (
${HUBEZ_COMMON}.EZ_DAY_STAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'SMS'
) S1,
(
SELECT
SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_DAY_STAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'LMS'
) L1,
(
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
hubez_common.EZ_DAY_STAT
WHERE
SND_CH_CD = 'MMS') AS M
JOIN (
${HUBEZ_COMMON}.EZ_DAY_STAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'MMS'
) M1,
(
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
FROM
hubez_common.EZ_DAY_STAT
WHERE
SND_CH_CD = 'LMS') AS L
JOIN (
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
FROM
hubez_common.EZ_DAY_STAT
WHERE
SND_CH_CD = 'RCS') AS R
WHERE DATE_FORMAT(eds.SUM_YMD, '%Y%m%d') BETWEEN #{startDay} AND #{endDay}
ORDER BY eds.SUM_YMD DESC
SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100),2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_DAY_STAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'ALIMTALK'
) A1
UNION ALL
SELECT
DATE_FORMAT(ecm.SUM_YMD, '%Y-%m-%d') AS sumYmd
, ecm.SND_CNT AS sndCnt
, ecm.SUCC_CNT AS succCnt
, ecm.SUCC_RT AS succRt
, S.SND_CNT AS sndCntS
, S.SUCC_CNT AS succCntS
, S.SUCC_RT AS succRtS
, L.SND_CNT AS sndCntL
, L.SUCC_CNT AS succCntL
, L.SUCC_RT AS succRtL
, M.SND_CNT AS sndCntM
, M.SUCC_CNT AS succCntM
, M.SUCC_RT AS succRtM
, A.SND_CNT AS sndCntR
, A.SUCC_CNT AS succCntR
, A.SUCC_RT AS succRtR
FROM
(SELECT
SUM_YMD
,SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_DAY_STAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
GROUP BY SUM_YMD ) ecm,
(SELECT
SUM_YMD
,SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_DAY_STAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'SMS'
GROUP BY SUM_YMD ) S,
(SELECT
SUM_YMD
,SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_DAY_STAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'LMS'
GROUP BY SUM_YMD ) L,
( SELECT
SUM_YMD
,SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_DAY_STAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'MMS'
GROUP BY SUM_YMD ) M,
( SELECT
SUM_YMD
,SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100),2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_DAY_STAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'ALIMTALK'
GROUP BY SUM_YMD ) A
WHERE 1=1
AND ecm.SUM_YMD = S.SUM_YMD
AND ecm.SUM_YMD = L.SUM_YMD
AND ecm.SUM_YMD = M.SUM_YMD
AND ecm.SUM_YMD = A.SUM_YMD
) T
ORDER BY sumYmd DESC
</select>
<select id="selectCustMstatList" parameterType="kr.co.uplus.ez.api.stats.dto.BsnmMonthListReqDto" resultType="kr.co.uplus.ez.api.stats.dto.BsnmMonthListResDto">
<select id="selectCustMstatListTotalCnt" parameterType="kr.co.uplus.ez.api.stats.dto.BsnmMonthList" resultType="int">
SELECT
COUNT(*) AS TOTALCNT
FROM
(SELECT
SUM_YM
,USER_SEQ
FROM ${HUBEZ_COMMON}.EZ_CUST_MSTAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
<if test="custNm != null and custNm != ''">
AND CUST_NM LIKE CONCAT('%',#{custNm},'%')
</if>
<if test="bizrno != null and bizrno != ''">
AND BIZRNO LIKE CONCAT('%',#{bizrno},'%')
</if>
GROUP BY SUM_YM, USER_SEQ) A
</select>
SELECT
ecm.SUM_YMD
-- ,ecm.CUST_NM
-- ,ecm.BIZRNO
, ecm.SND_CNT
, ecm.SUCC_CNT
, ecm.SUCC_RT
, S.SND_CNT AS SND_CNT_S
, S.SUCC_CNT AS SUCC_CNT_S
, S.SUCC_RT AS SUCC_RT_S
, L.SND_CNT AS SND_CNT_L
, L.SUCC_CNT AS SUCC_CNT_L
, L.SUCC_RT AS SUCC_RT_L
, M.SND_CNT AS SND_CNT_M
, M.SUCC_CNT AS SUCC_CNT_M
, M.SUCC_RT AS SUCC_RT_M
, R.SND_CNT AS SND_CNT_R
, R.SUCC_CNT AS SUCC_CNT_R
, R.SUCC_RT AS SUCC_RT_R
<select id="selectCustMstatList" parameterType="kr.co.uplus.ez.api.stats.dto.BsnmMonthList" resultType="kr.co.uplus.ez.api.stats.dto.BsnmMonthList">
SELECT
DATE_FORMAT(ecm.SUM_YM, '%Y-%m') AS sumYm
,ecm.CUST_NM AS custNm
,ecm.BIZRNO AS bizrno
, ecm.SND_CNT AS sndCnt
, ecm.SUCC_CNT AS succCnt
, ecm.SUCC_RT AS succRt
, S.SND_CNT AS sndCntS
, S.SUCC_CNT AS succCntS
, S.SUCC_RT AS succRtS
, L.SND_CNT AS sndCntL
, L.SUCC_CNT AS succCntL
, L.SUCC_RT AS succRtL
, M.SND_CNT AS sndCntM
, M.SUCC_CNT AS succCntM
, M.SUCC_RT AS succRtM
, A.SND_CNT AS sndCntR
, A.SUCC_CNT AS succCntR
, A.SUCC_RT AS succRtR
FROM
hubez_common.EZ_CUST_MSTAT ecm
JOIN (
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
FROM
hubez_common.EZ_CUST_MSTAT
WHERE
SND_CH_CD = 'SMS') AS S
JOIN (
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
FROM
hubez_common.EZ_CUST_MSTAT
WHERE
SND_CH_CD = 'MMS') AS M
JOIN (
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
FROM
hubez_common.EZ_CUST_MSTAT
WHERE
SND_CH_CD = 'LMS') AS L
JOIN (
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
FROM
hubez_common.EZ_CUST_MSTAT
WHERE
SND_CH_CD = 'RCS') AS R
WHERE 1 = 1
AND DATE_FORMAT(ecm.SUM_YM, '%Y%m') BETWEEN #{startMon} AND #{endMon}
# AND ecm.CUST_NM LIKE ''
# AND ecm.BIZRNO = #{bizrno}
ORDER BY ecm.SUM_YM DESC
(SELECT
SUM_YM
,USER_SEQ
,CUST_NM
,BIZRNO
,SUM(IFNULL(SND_CNT,0) + IFNULL(FBACK_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0) + IFNULL(FBACK_SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0) + IFNULL(FBACK_SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0) + IFNULL(FBACK_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_CUST_MSTAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
GROUP BY SUM_YM, USER_SEQ) ecm,
(SELECT
S1.SUM_YM
,S1.USER_SEQ
,SUM(IFNULL(S1.SND_CNT,0) + IFNULL(S2.FBACK_CNT,0)) AS SND_CNT
,SUM(IFNULL(S1.SUCC_CNT,0) + IFNULL(S2.FBACK_SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(S1.SUCC_CNT,0) + IFNULL(S2.FBACK_SUCC_CNT,0)) / SUM(IFNULL(S1.SND_CNT,0) + IFNULL(S2.FBACK_CNT,0)) * 100), 2) AS SUCC_RT
FROM
(SELECT
SUM_YM
,USER_SEQ
,SUM(SND_CNT) AS SND_CNT
,SUM(SUCC_CNT) AS SUCC_CNT
FROM
${HUBEZ_COMMON}.EZ_CUST_MSTAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'SMS'
GROUP BY SUM_YM, USER_SEQ) S1
LEFT OUTER JOIN
(SELECT
SUM_YM
,USER_SEQ
,SUM(FBACK_CNT) AS FBACK_CNT
,SUM(FBACK_SUCC_CNT) AS FBACK_SUCC_CNT
FROM
${HUBEZ_COMMON}.EZ_CUST_MSTAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'ALIMTALK'
AND RPLCSND_CH_CD = 'SMS'
GROUP BY SUM_YM, USER_SEQ) S2
ON S1.SUM_YM = S2.SUM_YM
AND S1.USER_SEQ = S2.USER_SEQ
GROUP BY S1.SUM_YM, S1.USER_SEQ ) S,
(SELECT
S1.SUM_YM
,S1.USER_SEQ
,SUM(IFNULL(S1.SND_CNT,0) + IFNULL(S2.FBACK_CNT,0)) AS SND_CNT
,SUM(IFNULL(S1.SUCC_CNT,0) + IFNULL(S2.FBACK_SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(S1.SUCC_CNT,0) + IFNULL(S2.FBACK_SUCC_CNT,0)) / SUM(IFNULL(S1.SND_CNT,0) + IFNULL(S2.FBACK_CNT,0)) * 100), 2) AS SUCC_RT
FROM
(SELECT
SUM_YM
,USER_SEQ
,SUM(SND_CNT) AS SND_CNT
,SUM(SUCC_CNT) AS SUCC_CNT
FROM
${HUBEZ_COMMON}.EZ_CUST_MSTAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'LMS'
GROUP BY SUM_YM, USER_SEQ) S1
LEFT OUTER JOIN
(SELECT
SUM_YM
,USER_SEQ
,SUM(FBACK_CNT) AS FBACK_CNT
,SUM(FBACK_SUCC_CNT) AS FBACK_SUCC_CNT
FROM
${HUBEZ_COMMON}.EZ_CUST_MSTAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'ALIMTALK'
AND RPLCSND_CH_CD = 'LMS'
GROUP BY SUM_YM, USER_SEQ) S2
ON S1.SUM_YM = S2.SUM_YM
AND S1.USER_SEQ = S2.USER_SEQ
GROUP BY S1.SUM_YM, S1.USER_SEQ ) L,
( SELECT
S1.SUM_YM
,S1.USER_SEQ
,SUM(IFNULL(S1.SND_CNT,0) + IFNULL(S2.FBACK_CNT,0)) AS SND_CNT
,SUM(IFNULL(S1.SUCC_CNT,0) + IFNULL(S2.FBACK_SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(S1.SUCC_CNT,0) + IFNULL(S2.FBACK_SUCC_CNT,0)) / SUM(IFNULL(S1.SND_CNT,0) + IFNULL(S2.FBACK_CNT,0)) * 100), 2) AS SUCC_RT
FROM
(SELECT
SUM_YM
,USER_SEQ
,SUM(SND_CNT) AS SND_CNT
,SUM(SUCC_CNT) AS SUCC_CNT
FROM
${HUBEZ_COMMON}.EZ_CUST_MSTAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'MMS'
GROUP BY SUM_YM, USER_SEQ) S1
LEFT OUTER JOIN
(SELECT
SUM_YM
,USER_SEQ
,SUM(FBACK_CNT) AS FBACK_CNT
,SUM(FBACK_SUCC_CNT) AS FBACK_SUCC_CNT
FROM
${HUBEZ_COMMON}.EZ_CUST_MSTAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'ALIMTALK'
AND RPLCSND_CH_CD = 'MMS'
GROUP BY SUM_YM, USER_SEQ) S2
ON S1.SUM_YM = S2.SUM_YM
AND S1.USER_SEQ = S2.USER_SEQ
GROUP BY S1.SUM_YM, S1.USER_SEQ ) M,
( SELECT
SUM_YM
,USER_SEQ
,SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100),2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_CUST_MSTAT
WHERE 1=1
AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d')
AND SND_CH_CD = 'ALIMTALK'
GROUP BY SUM_YM, USER_SEQ ) A
WHERE 1=1
AND ecm.SUM_YM = S.SUM_YM
AND ecm.SUM_YM = L.SUM_YM
AND ecm.SUM_YM = M.SUM_YM
AND ecm.SUM_YM = A.SUM_YM
AND ecm.USER_SEQ = S.USER_SEQ
AND ecm.USER_SEQ = L.USER_SEQ
AND ecm.USER_SEQ = M.USER_SEQ
AND ecm.USER_SEQ = A.USER_SEQ
<if test="custNm != null and custNm != ''">
AND ecm.CUST_NM LIKE CONCAT('%',#{custNm},'%')
</if>
<if test="bizrno != null and bizrno != ''">
AND ecm.BIZRNO LIKE CONCAT('%',#{bizrno},'%')
</if>
ORDER BY ecm.SUM_YM, ecm.USER_SEQ DESC
LIMIT #{page}, #{pagePerRows}
</select>
<select id="selectCustDstatListTotalCnt" parameterType="kr.co.uplus.ez.api.stats.dto.BsnmDayListReqDto" resultType="int">
SELECT
COUNT(*) AS TOTALCNT
FROM
(SELECT
SUM_YMD
,USER_SEQ
,CUST_NM
,BIZRNO
,SUM(IFNULL(SND_CNT,0) + IFNULL(FBACK_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0) + IFNULL(FBACK_SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0) + IFNULL(FBACK_SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0) + IFNULL(FBACK_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_CUST_DSTAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
<if test="custNm != null and custNm != ''">
AND CUST_NM LIKE CONCAT('%',#{custNm},'%')
</if>
<if test="bizrno != null and bizrno != ''">
AND BIZRNO LIKE CONCAT('%',#{bizrno},'%')
</if>
GROUP BY SUM_YMD, USER_SEQ) A
</select>
<select id="selectCustDstatList" parameterType="kr.co.uplus.ez.api.stats.dto.BsnmDayListReqDto" resultType="kr.co.uplus.ez.api.stats.dto.BsnmDayList">
SELECT
ecd.SUM_YMD
-- ,ecd.CUST_NM
-- ,ecd.BIZRNO
, ecd.SND_CNT
, ecd.SUCC_CNT
, ecd.SUCC_RT
, S.SND_CNT AS SND_CNT_S
, S.SUCC_CNT AS SUCC_CNT_S
, S.SUCC_RT AS SUCC_RT_S
, L.SND_CNT AS SND_CNT_L
, L.SUCC_CNT AS SUCC_CNT_L
, L.SUCC_RT AS SUCC_RT_L
, M.SND_CNT AS SND_CNT_M
, M.SUCC_CNT AS SUCC_CNT_M
, M.SUCC_RT AS SUCC_RT_M
, R.SND_CNT AS SND_CNT_R
, R.SUCC_CNT AS SUCC_CNT_R
, R.SUCC_RT AS SUCC_RT_R
SELECT
DATE_FORMAT(ecd.SUM_YMD, '%Y-%m-%d') AS SUM_YMD
,ecd.CUST_NM
,ecd.BIZRNO
, ecd.SND_CNT
, ecd.SUCC_CNT
, ecd.SUCC_RT
, S.SND_CNT AS SND_CNT_S
, S.SUCC_CNT AS SUCC_CNT_S
, S.SUCC_RT AS SUCC_RT_S
, L.SND_CNT AS SND_CNT_L
, L.SUCC_CNT AS SUCC_CNT_L
, L.SUCC_RT AS SUCC_RT_L
, M.SND_CNT AS SND_CNT_M
, M.SUCC_CNT AS SUCC_CNT_M
, M.SUCC_RT AS SUCC_RT_M
, A.SND_CNT AS SND_CNT_R
, A.SUCC_CNT AS SUCC_CNT_R
, A.SUCC_RT AS SUCC_RT_R
FROM
hubez_common.EZ_CUST_DSTAT ecd
JOIN (
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
FROM
hubez_common.EZ_CUST_DSTAT
WHERE
SND_CH_CD = 'SMS') AS S
JOIN (
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
FROM
hubez_common.EZ_CUST_DSTAT
WHERE
SND_CH_CD = 'MMS') AS M
JOIN (
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
FROM
hubez_common.EZ_CUST_DSTAT
WHERE
SND_CH_CD = 'LMS') AS L
JOIN (
SELECT
SND_CNT
, SUCC_CNT
, SUCC_RT
FROM
hubez_common.EZ_CUST_DSTAT
WHERE
SND_CH_CD = 'RCS') AS R
WHERE
DATE_FORMAT(ecd.SUM_YMD, '%Y%m%d') BETWEEN #{startDay} AND #{endDay}
ORDER BY ecd.SUM_YMD DESC
(SELECT
SUM_YMD
,USER_SEQ
,CUST_NM
,BIZRNO
,SUM(IFNULL(SND_CNT,0) + IFNULL(FBACK_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0) + IFNULL(FBACK_SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0) + IFNULL(FBACK_SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0) + IFNULL(FBACK_CNT,0)) * 100), 2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_CUST_DSTAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
GROUP BY SUM_YMD, USER_SEQ) ecd,
(SELECT
S1.SUM_YMD
,S1.USER_SEQ
,SUM(IFNULL(S1.SND_CNT,0) + IFNULL(S2.FBACK_CNT,0)) AS SND_CNT
,SUM(IFNULL(S1.SUCC_CNT,0) + IFNULL(S2.FBACK_SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(S1.SUCC_CNT,0) + IFNULL(S2.FBACK_SUCC_CNT,0)) / SUM(IFNULL(S1.SND_CNT,0) + IFNULL(S2.FBACK_CNT,0)) * 100), 2) AS SUCC_RT
FROM
(SELECT
SUM_YMD
,USER_SEQ
,SUM(SND_CNT) AS SND_CNT
,SUM(SUCC_CNT) AS SUCC_CNT
FROM
${HUBEZ_COMMON}.EZ_CUST_DSTAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'SMS'
GROUP BY SUM_YMD, USER_SEQ) S1
LEFT OUTER JOIN
(SELECT
SUM_YMD
,USER_SEQ
,SUM(FBACK_CNT) AS FBACK_CNT
,SUM(FBACK_SUCC_CNT) AS FBACK_SUCC_CNT
FROM
${HUBEZ_COMMON}.EZ_CUST_DSTAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'ALIMTALK'
AND RPLCSND_CH_CD = 'SMS'
GROUP BY SUM_YMD, USER_SEQ) S2
ON S1.SUM_YMD = S2.SUM_YMD
AND S1.USER_SEQ = S2.USER_SEQ
GROUP BY S1.SUM_YMD, S1.USER_SEQ ) S,
(SELECT
S1.SUM_YMD
,S1.USER_SEQ
,SUM(IFNULL(S1.SND_CNT,0) + IFNULL(S2.FBACK_CNT,0)) AS SND_CNT
,SUM(IFNULL(S1.SUCC_CNT,0) + IFNULL(S2.FBACK_SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(S1.SUCC_CNT,0) + IFNULL(S2.FBACK_SUCC_CNT,0)) / SUM(IFNULL(S1.SND_CNT,0) + IFNULL(S2.FBACK_CNT,0)) * 100), 2) AS SUCC_RT
FROM
(SELECT
SUM_YMD
,USER_SEQ
,SUM(SND_CNT) AS SND_CNT
,SUM(SUCC_CNT) AS SUCC_CNT
FROM
${HUBEZ_COMMON}.EZ_CUST_DSTAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'LMS'
GROUP BY SUM_YMD, USER_SEQ) S1
LEFT OUTER JOIN
(SELECT
SUM_YMD
,USER_SEQ
,SUM(FBACK_CNT) AS FBACK_CNT
,SUM(FBACK_SUCC_CNT) AS FBACK_SUCC_CNT
FROM
${HUBEZ_COMMON}.EZ_CUST_DSTAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'ALIMTALK'
AND RPLCSND_CH_CD = 'LMS'
GROUP BY SUM_YMD, USER_SEQ) S2
ON S1.SUM_YMD = S2.SUM_YMD
AND S1.USER_SEQ = S2.USER_SEQ
GROUP BY S1.SUM_YMD, S1.USER_SEQ ) L,
( SELECT
S1.SUM_YMD
,S1.USER_SEQ
,SUM(IFNULL(S1.SND_CNT,0) + IFNULL(S2.FBACK_CNT,0)) AS SND_CNT
,SUM(IFNULL(S1.SUCC_CNT,0) + IFNULL(S2.FBACK_SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(S1.SUCC_CNT,0) + IFNULL(S2.FBACK_SUCC_CNT,0)) / SUM(IFNULL(S1.SND_CNT,0) + IFNULL(S2.FBACK_CNT,0)) * 100), 2) AS SUCC_RT
FROM
(SELECT
SUM_YMD
,USER_SEQ
,SUM(SND_CNT) AS SND_CNT
,SUM(SUCC_CNT) AS SUCC_CNT
FROM
${HUBEZ_COMMON}.EZ_CUST_DSTAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'MMS'
GROUP BY SUM_YMD, USER_SEQ) S1
LEFT OUTER JOIN
(SELECT
SUM_YMD
,USER_SEQ
,SUM(FBACK_CNT) AS FBACK_CNT
,SUM(FBACK_SUCC_CNT) AS FBACK_SUCC_CNT
FROM
${HUBEZ_COMMON}.EZ_CUST_DSTAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'ALIMTALK'
AND RPLCSND_CH_CD = 'MMS'
GROUP BY SUM_YMD, USER_SEQ) S2
ON S1.SUM_YMD = S2.SUM_YMD
AND S1.USER_SEQ = S2.USER_SEQ
GROUP BY S1.SUM_YMD, S1.USER_SEQ ) M,
( SELECT
SUM_YMD
,USER_SEQ
,SUM(IFNULL(SND_CNT,0)) AS SND_CNT
,SUM(IFNULL(SUCC_CNT,0)) AS SUCC_CNT
,ROUND((SUM(IFNULL(SUCC_CNT,0)) / SUM(IFNULL(SND_CNT,0)) * 100),2) AS SUCC_RT
FROM
${HUBEZ_COMMON}.EZ_CUST_DSTAT
WHERE 1=1
AND SUM_YMD BETWEEN DATE_FORMAT(#{startDay},'%Y%m%d') AND DATE_FORMAT(#{endDay},'%Y%m%d')
AND SND_CH_CD = 'ALIMTALK'
GROUP BY SUM_YMD, USER_SEQ ) A
WHERE 1=1
AND ecd.SUM_YMD = S.SUM_YMD
AND ecd.SUM_YMD = L.SUM_YMD
AND ecd.SUM_YMD = M.SUM_YMD
AND ecd.SUM_YMD = A.SUM_YMD
AND ecd.USER_SEQ = S.USER_SEQ
AND ecd.USER_SEQ = L.USER_SEQ
AND ecd.USER_SEQ = M.USER_SEQ
AND ecd.USER_SEQ = A.USER_SEQ
<if test="custNm != null and custNm != ''">
AND ecd.CUST_NM LIKE CONCAT('%',#{custNm},'%')
</if>
<if test="bizrno != null and bizrno != ''">
AND ecd.BIZRNO LIKE CONCAT('%',#{bizrno},'%')
</if>
ORDER BY ecd.SUM_YMD, ecd.USER_SEQ DESC
LIMIT #{page}, #{pagePerRows}
</select>
</mapper>