발송결과 페이지 및 속도개선 진행중 - 화면수정 중

This commit is contained in:
hehihoho3@gmail.com 2025-01-16 10:56:01 +09:00
parent 071fd2b35b
commit d34f626aa0
10 changed files with 1047 additions and 763 deletions

View File

@ -0,0 +1,32 @@
package itn.let.mjo.msgsent.service;
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;
/**
*
* @author : 이호영
* @fileName : MjonMsgSWFDTO.java
* @date : 2025.01.16
* @description : 그룹ID로 성공 실패 대기 건수를 구해서 전달해주는 DTO
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2025.01.16 이호영 최초 생성
*
*
*
*/
@Getter
@Setter
public class MjonMsgSWFDTO implements Serializable {
private static final long serialVersionUID = 1L; // 선언
private int resultSValue; // 성공건수
private int resultFValue; // 실패건수
private int resultWValue; // 대기건수
}

View File

@ -1,6 +1,7 @@
package itn.let.mjo.msgsent.service;
import java.util.List;
import java.util.Map;
import itn.let.fax.addr.service.FaxAddrGroupVO;
import itn.let.mjo.addr.service.AddrGroupVO;
@ -16,6 +17,8 @@ public interface MjonMsgSentService {
//발송 관리 전체 발송 리스트 불러오기
public List<MjonMsgSentVO> selectAllMsgSentList(MjonMsgSentVO mjonMsgSentVO) throws Exception;
public Map<String, Object> selectAllMsgSentList_advc(MjonMsgSentVO mjonMsgSentVO) throws Exception;
//발송 관리 전체 발송 리스트 불러오기 => 주소록 조인 제거버전
public List<MjonMsgSentVO> selectAllMsgSentSimpleList(MjonMsgSentVO mjonMsgSentVO) throws Exception;
@ -54,5 +57,8 @@ public interface MjonMsgSentService {
//첨부파일 정보 불러오기
public MjonMsgSentVO selectFileInfo(String streFileId) throws Exception;
public int countAllMsgSentList(MjonMsgSentVO mjonMsgSentVO);
}

View File

@ -4,7 +4,11 @@ import java.util.Date;
import java.util.List;
import itn.let.uss.umt.service.UserDefaultVO;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class MjonMsgSentVO extends UserDefaultVO{
private static final long serialVersionUID = 1L;
@ -86,399 +90,8 @@ public class MjonMsgSentVO extends UserDefaultVO{
private String successCount;
private String resultSValue;
private String resultFValue;
private String resultWValue;
private String resultWFValue;
public String getSuccessCount() {
return successCount;
}
public void setSuccessCount(String successCount) {
this.successCount = successCount;
}
public String getMsgSentType() {
return msgSentType;
}
public void setMsgSentType(String msgSentType) {
this.msgSentType = msgSentType;
}
public String getCallFromComma() {
return callFromComma;
}
public void setCallFromComma(String callFromComma) {
this.callFromComma = callFromComma;
}
public String getCallToComma() {
return callToComma;
}
public void setCallToComma(String callToComma) {
this.callToComma = callToComma;
}
public String getAtchFiles() {
return atchFiles;
}
public void setAtchFiles(String atchFiles) {
this.atchFiles = atchFiles;
}
public String getMsgId() {
return msgId;
}
public void setMsgId(String msgId) {
this.msgId = msgId;
}
public int getSuccessCnt() {
return successCnt;
}
public void setSuccessCnt(int successCnt) {
this.successCnt = successCnt;
}
public String getMsgTypeName() {
return msgTypeName;
}
public void setMsgTypeName(String msgTypeName) {
this.msgTypeName = msgTypeName;
}
public int getOrderByCode() {
return orderByCode;
}
public void setOrderByCode(int orderByCode) {
this.orderByCode = orderByCode;
}
public String getAtchFileId() {
return atchFileId;
}
public void setAtchFileId(String atchFileId) {
this.atchFileId = atchFileId;
}
public String getFileSn() {
return fileSn;
}
public void setFileSn(String fileSn) {
this.fileSn = fileSn;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getAddrNm() {
return addrNm;
}
public void setAddrNm(String addrNm) {
this.addrNm = addrNm;
}
public String getMsgSeq() {
return msgSeq;
}
public void setMsgSeq(String msgSeq) {
this.msgSeq = msgSeq;
}
public String getMsgGroupId() {
return msgGroupId;
}
public void setMsgGroupId(String msgGroupId) {
this.msgGroupId = msgGroupId;
}
public List getMsgGroupIdList() {
return msgGroupIdList;
}
public void setMsgGroupIdList(List msgGroupIdList) {
this.msgGroupIdList = msgGroupIdList;
}
public String getSmsTxt() {
return smsTxt;
}
public void setSmsTxt(String smsTxt) {
this.smsTxt = smsTxt;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public Date getRegdate() {
return regdate;
}
public void setRegdate(Date regdate) {
this.regdate = regdate;
}
public Date getReqdate() {
return reqdate;
}
public void setReqdate(Date reqdate) {
this.reqdate = reqdate;
}
public String getCallFrom() {
return callFrom;
}
public void setCallFrom(String callFrom) {
this.callFrom = callFrom;
}
public String getCallTo() {
return callTo;
}
public void setCallTo(String callTo) {
this.callTo = callTo;
}
public List getCallToList() {
return callToList;
}
public void setCallToList(List callToList) {
this.callToList = callToList;
}
public String getTotPrice() {
return totPrice;
}
public void setTotPrice(String totPrice) {
this.totPrice = totPrice;
}
public String getEachPrice() {
return eachPrice;
}
public void setEachPrice(String eachPrice) {
this.eachPrice = eachPrice;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getTotMsgPrice() {
return totMsgPrice;
}
public void setTotMsgPrice(String totMsgPrice) {
this.totMsgPrice = totMsgPrice;
}
public String getRsltCode() {
return rsltCode;
}
public void setRsltCode(String rsltCode) {
this.rsltCode = rsltCode;
}
public String getRsltCode2() {
return rsltCode2;
}
public void setRsltCode2(String rsltCode2) {
this.rsltCode2 = rsltCode2;
}
public String getMsgType() {
return msgType;
}
public void setMsgType(String msgType) {
this.msgType = msgType;
}
public String getMsgGroupCnt() {
return msgGroupCnt;
}
public void setMsgGroupCnt(String msgGroupCnt) {
this.msgGroupCnt = msgGroupCnt;
}
public String getFileCnt() {
return fileCnt;
}
public void setFileCnt(String fileCnt) {
this.fileCnt = fileCnt;
}
public String getTotMsgCnt() {
return totMsgCnt;
}
public void setTotMsgCnt(String totMsgCnt) {
this.totMsgCnt = totMsgCnt;
}
public String getCurState() {
return curState;
}
public void setCurState(String curState) {
this.curState = curState;
}
public String getReserveYn() {
return reserveYn;
}
public void setReserveYn(String reserveYn) {
this.reserveYn = reserveYn;
}
public String getReserveCYn() {
return reserveCYn;
}
public void setReserveCYn(String reserveCYn) {
this.reserveCYn = reserveCYn;
}
public String getFilePath1() {
return filePath1;
}
public void setFilePath1(String filePath1) {
this.filePath1 = filePath1;
}
public String getFilePath2() {
return filePath2;
}
public void setFilePath2(String filePath2) {
this.filePath2 = filePath2;
}
public String getFilePath3() {
return filePath3;
}
public void setFilePath3(String filePath3) {
this.filePath3 = filePath3;
}
public Date getSentDate() {
return sentDate;
}
public void setSentDate(Date sentDate) {
this.sentDate = sentDate;
}
public String getAgentCode() {
return agentCode;
}
public void setAgentCode(String agentCode) {
this.agentCode = agentCode;
}
public String getUserData() {
return userData;
}
public void setUserData(String userData) {
this.userData = userData;
}
public List getUserDataList() {
return userDataList;
}
public void setUserDataList(List userDataList) {
this.userDataList = userDataList;
}
public Date getCancelDate() {
return cancelDate;
}
public void setCancelDate(Date cancelDate) {
this.cancelDate = cancelDate;
}
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
public String getSearchMsgType() {
return searchMsgType;
}
public void setSearchMsgType(String searchMsgType) {
this.searchMsgType = searchMsgType;
}
public String getTabType() {
return tabType;
}
public void setTabType(String tabType) {
this.tabType = tabType;
}
public String getStateType() {
return stateType;
}
public void setStateType(String stateType) {
this.stateType = stateType;
}
public String getListType() {
return listType;
}
public void setListType(String listType) {
this.listType = listType;
}
public String getResultType() {
return resultType;
}
public void setResultType(String resultType) {
this.resultType = resultType;
}
public String getMsgResultCnt() {
return msgResultCnt;
}
public void setMsgResultCnt(String msgResultCnt) {
this.msgResultCnt = msgResultCnt;
}
public String getMsgResultSts() {
return msgResultSts;
}
public void setMsgResultSts(String msgResultSts) {
this.msgResultSts = msgResultSts;
}
public String getAddrGrpNm() {
return addrGrpNm;
}
public void setAddrGrpNm(String addrGrpNm) {
this.addrGrpNm = addrGrpNm;
}
public int getOrderByrsltCode() {
return orderByrsltCode;
}
public void setOrderByrsltCode(int orderByrsltCode) {
this.orderByrsltCode = orderByrsltCode;
}
public String getMsgResult() {
return msgResult;
}
public void setMsgResult(String msgResult) {
this.msgResult = msgResult;
}
public String getNtceBgnde() {
return ntceBgnde;
}
public void setNtceBgnde(String ntceBgnde) {
this.ntceBgnde = ntceBgnde;
}
public String getNtceEndde() {
return ntceEndde;
}
public void setNtceEndde(String ntceEndde) {
this.ntceEndde = ntceEndde;
}
public String getMsgKind() {
return msgKind;
}
public void setMsgKind(String msgKind) {
this.msgKind = msgKind;
}
public String getDelayYn() {
return delayYn;
}
public void setDelayYn(String delayYn) {
this.delayYn = delayYn;
}
public String getDelayCompleteYn() {
return delayCompleteYn;
}
public void setDelayCompleteYn(String delayCompleteYn) {
this.delayCompleteYn = delayCompleteYn;
}
public String getSendKind() {
return sendKind;
}
public void setSendKind(String sendKind) {
this.sendKind = sendKind;
}
public String getResultSValue() {
return resultSValue;
}
public void setResultSValue(String resultSValue) {
this.resultSValue = resultSValue;
}
public String getResultWFValue() {
return resultWFValue;
}
public void setResultWFValue(String resultWFValue) {
this.resultWFValue = resultWFValue;
}
public Date getDelayOrgTime() {
return delayOrgTime;
}
public void setDelayOrgTime(Date delayOrgTime) {
this.delayOrgTime = delayOrgTime;
}
}

View File

@ -9,6 +9,7 @@ import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
import itn.let.fax.addr.service.FaxAddrGroupVO;
import itn.let.mjo.addr.service.AddrGroupVO;
import itn.let.mjo.block.service.MjonBlockVO;
import itn.let.mjo.msgsent.service.MjonMsgSWFDTO;
import itn.let.mjo.msgsent.service.MjonMsgSentVO;
@Repository("MjonMsgSentDAO")
@ -56,6 +57,13 @@ public class MjonMsgSentDAO extends EgovAbstractDAO {
return (List<MjonMsgSentVO>) list("MjonMsgSentDAO.selectAllMsgSentList",mjonMsgSentVO);
}
//발송 관리 전체 발송 리스트 불러오기
@SuppressWarnings("unchecked")
public List<MjonMsgSentVO> selectAllMsgSentList_advc(MjonMsgSentVO mjonMsgSentVO) throws Exception{
return (List<MjonMsgSentVO>) list("MjonMsgSentDAO.selectAllMsgSentList_advc",mjonMsgSentVO);
}
//발송 관리 전체 발송 리스트 불러오기 => 주소록 조인 제거버전
@SuppressWarnings("unchecked")
public List<MjonMsgSentVO> selectAllMsgSentSimpleList(MjonMsgSentVO mjonMsgSentVO) throws Exception{
@ -158,5 +166,14 @@ public class MjonMsgSentDAO extends EgovAbstractDAO {
public MjonMsgSentVO selectFileInfo(String streFileId) throws Exception{
return (MjonMsgSentVO) select("MjonMsgSentDAO.selectFileInfo", streFileId);
}
public int countAllMsgSentList(MjonMsgSentVO mjonMsgSentVO) {
return (Integer)select("MjonMsgSentDAO.countAllMsgSentList", mjonMsgSentVO);
}
public MjonMsgSWFDTO findBySWF(String msgGroupId) {
return (MjonMsgSWFDTO) select("MjonMsgSentDAO.findBySWF", msgGroupId);
}
}

View File

@ -1,7 +1,12 @@
package itn.let.mjo.msgsent.service.impl;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
@ -12,9 +17,12 @@ import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import itn.let.fax.addr.service.FaxAddrGroupVO;
import itn.let.mjo.addr.service.AddrGroupVO;
import itn.let.mjo.block.service.MjonBlockVO;
import itn.let.mjo.msgsent.service.MjonMsgSWFDTO;
import itn.let.mjo.msgsent.service.MjonMsgSentService;
import itn.let.mjo.msgsent.service.MjonMsgSentVO;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service("MjonMsgSentService")
public class MjonMsgSentServiceImpl extends EgovAbstractServiceImpl implements MjonMsgSentService{
@ -84,6 +92,54 @@ public class MjonMsgSentServiceImpl extends EgovAbstractServiceImpl implements
return resultList;
}
//발송 관리 전체 발송 리스트 불러오기
public Map<String, Object> selectAllMsgSentList_advc(MjonMsgSentVO mjonMsgSentVO) throws Exception{
Map<String, Object> resultMap = new HashMap<String, Object>();
// 목록
List<MjonMsgSentVO> resultList = mjonMsgSentDAO.selectAllMsgSentList_advc(mjonMsgSentVO);
// MsgGroupId만 추출하여 리스트 생성
// List<String> msgGroupIdList = resultList.stream()
// .map(MjonMsgSentVO::getMsgGroupId) // MsgGroupId 추출
// .collect(Collectors.toList()); // 리스트로 수집
resultList.stream().forEach(t->{
MjonMsgSWFDTO mjonMsgSWFDTO = mjonMsgSentDAO.findBySWF(t.getMsgGroupId());
t.setResultSValue(String.valueOf(mjonMsgSWFDTO.getResultSValue()));
t.setResultFValue(String.valueOf(mjonMsgSWFDTO.getResultFValue()));
t.setResultWValue(String.valueOf(mjonMsgSWFDTO.getResultWValue()));
BigDecimal eachPrice = new BigDecimal(t.getEachPrice());
BigDecimal resultSValue = new BigDecimal(mjonMsgSWFDTO.getResultSValue());
BigDecimal totalPrice = eachPrice.multiply(resultSValue);
// 소수점 자리로 설정 (반올림)
BigDecimal roundedTotalPrice = totalPrice.setScale(1, RoundingMode.HALF_UP);
t.setTotPrice(roundedTotalPrice.toPlainString()); // 결과를 String으로 설정
});
// 카운트
int totalCnt = mjonMsgSentDAO.countAllMsgSentList(mjonMsgSentVO);
// int totalCnt = 0;
resultMap.put("resultList", resultList);
resultMap.put("totalCnt", totalCnt);
return resultMap;
}
@Override
public int countAllMsgSentList(MjonMsgSentVO mjonMsgSentVO) {
return mjonMsgSentDAO.countAllMsgSentList(mjonMsgSentVO);
}
//발송 관리 전체 발송 리스트 불러오기 => 주소록 조인 제거버전
public List<MjonMsgSentVO> selectAllMsgSentSimpleList(MjonMsgSentVO mjonMsgSentVO) throws Exception{
List<MjonMsgSentVO> resultList = new ArrayList<MjonMsgSentVO>();

View File

@ -5,14 +5,17 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
@ -47,7 +50,9 @@ import itn.let.mjo.apikey.service.ApiKeyVO;
import itn.let.mjo.msgsent.service.MjonMsgSentCntVO;
import itn.let.mjo.msgsent.service.MjonMsgSentService;
import itn.let.mjo.msgsent.service.MjonMsgSentVO;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Controller
public class MjonMsgSentController {
@ -234,22 +239,9 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll
String startDate = mjonMsgSentVO.getStartDate();
String endDate = mjonMsgSentVO.getEndDate();
if(startDate == null && endDate == null ) {
//
// Calendar cal = Calendar.getInstance();
// Date now = new Date();
//
// SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
//
// //종료일은 오늘날짜
// cal.setTime(now);
// endDate = format.format(cal.getTime());
//
// //시작일은 전날로 셋팅
// cal.add(Calendar.DATE, -1);
// startDate = format.format(cal.getTime());
if(StringUtils.isEmpty(startDate)
&& StringUtils.isEmpty(endDate))
{
mjonMsgSentVO.setStartDate(DateUtils.getDateMonthsAgo(3));
mjonMsgSentVO.setEndDate(DateUtils.getCurrentDate());
@ -285,6 +277,7 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll
//전체 발송 건수 통계 불러오기
mjonMsgSentVO.setMsgType("");
log.info(" :: mjonMsgSentService.selectDetailMsgSentCntMix :: ");
List<MjonMsgSentVO> totalMsgCnt = mjonMsgSentService.selectDetailMsgSentCntMix(mjonMsgSentVO);
System.out.println("start");
@ -302,8 +295,6 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll
List<MjonMsgSentVO> A_lmsMsgCnt = new ArrayList<MjonMsgSentVO>();
List<MjonMsgSentVO> A_mmsMsgCnt = new ArrayList<MjonMsgSentVO>();
System.out.println(" ::H_totalMsgCnt :: "+ H_totalMsgCnt.size());
System.out.println(" ::A_totalMsgCnt :: "+ A_totalMsgCnt.size());
H_totalMsgCnt.forEach(t->{
if (Integer.parseInt(t.getFilePath1())>0) {
@ -325,8 +316,6 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll
}
});
//* 홈페이지에서 보낸 데이터 LIST
//* SEND_KIND = "H"
@ -366,7 +355,6 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll
apiKeyVO.setMberId(userId);
model.addAttribute("appMgmt", apiKeyMngService.selectMberApiKeyChk(apiKeyVO) > 0 ? true : false);
System.out.println("MsgSentView_HA_allSentAjax_end");
return "/web/msgsent/subcontent/MsgSentView_HA_allSentAjax";
@ -421,89 +409,191 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll
@RequestMapping(value= {"/web/mjon/msgsent/selectMsgSentListViewAjax.do"})
public String selectMsgSentListViewAjax(@ModelAttribute("searchVO") MjonMsgSentVO mjonMsgSentVO, ModelMap model) throws Exception{
String pageUrl = "";
try {
//로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
mjonMsgSentVO.setUserId(userId);
// 검색 리스트 불러오기
// if(mjonMsgSentVO.getPageUnit() != 10) {
// mjonMsgSentVO.setPageUnit(mjonMsgSentVO.getPageUnit());
// }
//기본 내림차순 정렬
if(mjonMsgSentVO.getSearchSortOrd().equals("")) {
mjonMsgSentVO.setSearchSortOrd("desc");
mjonMsgSentVO.setSearchSortCnd("regdate");
}
if(mjonMsgSentVO.getListType().equals("")) {
mjonMsgSentVO.setListType("groupList");
}
//선택 정보 저장
//mjonResvMsgVO.setSearchMsgType(mjonResvMsgVO.getTabType());
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(mjonMsgSentVO.getPageIndex());
paginationInfo.setRecordCountPerPage(mjonMsgSentVO.getPageUnit());
paginationInfo.setPageSize(mjonMsgSentVO.getPageSize());
mjonMsgSentVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
mjonMsgSentVO.setLastIndex(paginationInfo.getLastRecordIndex());
mjonMsgSentVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if(!DateUtils.dateChkAndValueChk(mjonMsgSentVO.getStartDate(),mjonMsgSentVO.getEndDate(), 3 )) {
mjonMsgSentVO.setStartDate(DateUtils.getDateMonthsAgo(3));
mjonMsgSentVO.setEndDate(DateUtils.getCurrentDate());
};
model.addAttribute("startDate", mjonMsgSentVO.getStartDate());
model.addAttribute("endDate", mjonMsgSentVO.getEndDate());
//전체 발송 리스트 불러오기
Map<String, Object> resultMap = mjonMsgSentService.selectAllMsgSentList_advc(mjonMsgSentVO);
model.addAttribute("resultAllSentList", resultMap.get("resultList"));
paginationInfo.setTotalRecordCount((Integer)resultMap.get("totalCnt"));
model.addAttribute("paginationInfo", paginationInfo);
model.addAttribute("totalRecordCount", paginationInfo.getTotalRecordCount());
model.addAttribute("mjonMsgSentVO", mjonMsgSentVO);
String stateType = mjonMsgSentVO.getStateType();
// String pageUrl = "web/msgsent/MsgSentAllListAjax";
/*
pageUrl = "web/msgsent/MsgSentAllListAjax";
if(stateType.equals("ready")) {
pageUrl = "web/msgsent/MsgSentReadyListAjax";
}else if(stateType.equals("complete")) {
pageUrl = "web/msgsent/MsgSentCompleteListAjax";
}else if(stateType.equals("fail")) {
pageUrl = "web/msgsent/MsgSentFailListAjax";
}*/
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
return "web/msgsent/MsgSentAllListAjax";
}
@RequestMapping(value= {"/web/mjon/msgsent/selectMsgSentListViewAjax_backup.do"})
public String selectMsgSentListViewAjax_backup(@ModelAttribute("searchVO") MjonMsgSentVO mjonMsgSentVO, ModelMap model) throws Exception{
//로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
mjonMsgSentVO.setUserId(userId);
// 검색 리스트 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
mjonMsgSentVO.setUserId(userId);
// 검색 리스트 불러오기
if(mjonMsgSentVO.getPageUnit() != 10) {
mjonMsgSentVO.setPageUnit(mjonMsgSentVO.getPageUnit());
}
//기본 내림차순 정렬
if(mjonMsgSentVO.getSearchSortOrd().equals("")) {
mjonMsgSentVO.setSearchSortOrd("desc");
mjonMsgSentVO.setSearchSortCnd("regdate");
}
if(mjonMsgSentVO.getListType().equals("")) {
mjonMsgSentVO.setListType("groupList");
}
//선택 정보 저장
//mjonResvMsgVO.setSearchMsgType(mjonResvMsgVO.getTabType());
//기본 내림차순 정렬
if(mjonMsgSentVO.getSearchSortOrd().equals("")) {
mjonMsgSentVO.setSearchSortOrd("desc");
mjonMsgSentVO.setSearchSortCnd("regdate");
}
if(mjonMsgSentVO.getListType().equals("")) {
mjonMsgSentVO.setListType("groupList");
}
//선택 정보 저장
//mjonResvMsgVO.setSearchMsgType(mjonResvMsgVO.getTabType());
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(mjonMsgSentVO.getPageIndex());
paginationInfo.setRecordCountPerPage(mjonMsgSentVO.getPageUnit());
paginationInfo.setPageSize(mjonMsgSentVO.getPageSize());
mjonMsgSentVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
mjonMsgSentVO.setLastIndex(paginationInfo.getLastRecordIndex());
mjonMsgSentVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if(!DateUtils.dateChkAndValueChk(mjonMsgSentVO.getStartDate(),mjonMsgSentVO.getEndDate(), 3 )) {
mjonMsgSentVO.setStartDate(DateUtils.getDateMonthsAgo(3));
mjonMsgSentVO.setEndDate(DateUtils.getCurrentDate());
};
model.addAttribute("startDate", mjonMsgSentVO.getStartDate());
model.addAttribute("endDate", mjonMsgSentVO.getEndDate());
//전체 발송 리스트 불러오기
List<MjonMsgSentVO> resultAllSentList = mjonMsgSentService.selectAllMsgSentList(mjonMsgSentVO);
model.addAttribute("resultAllSentList", resultAllSentList);
model.addAttribute("resultAllSentCnt", resultAllSentList.size());
model.addAttribute("searchKeyword", mjonMsgSentVO.getSearchKeyword());
paginationInfo.setTotalRecordCount( resultAllSentList.size()> 0 ? (Integer.parseInt((resultAllSentList.get(0)).getTotMsgCnt())) : 0);
model.addAttribute("paginationInfo", paginationInfo);
model.addAttribute("totalRecordCount", paginationInfo.getTotalRecordCount());
//발송 결과 성공 실패 건수 리스트 불러오기
List<MjonMsgSentVO> resultMsgSucFailList = new ArrayList<MjonMsgSentVO>();
if(resultAllSentList.size() > 0) {
resultMsgSucFailList = mjonMsgSentService.selectAllMsgSentSucFailList(resultAllSentList, mjonMsgSentVO);
}
model.addAttribute("resultMsgSucFailList", resultMsgSucFailList);
model.addAttribute("mjonMsgSentVO", mjonMsgSentVO);
String stateType = mjonMsgSentVO.getStateType();
String pageUrl = "web/msgsent/MsgSentAllListAjax";
if(stateType.equals("ready")) {
pageUrl = "web/msgsent/MsgSentReadyListAjax";
}else if(stateType.equals("complete")) {
pageUrl = "web/msgsent/MsgSentCompleteListAjax";
}else if(stateType.equals("fail")) {
pageUrl = "web/msgsent/MsgSentFailListAjax";
}
model.addAttribute("startDate", mjonMsgSentVO.getStartDate());
model.addAttribute("endDate", mjonMsgSentVO.getEndDate());
//전체 발송 리스트 불러오기
List<MjonMsgSentVO> resultAllSentList = mjonMsgSentService.selectAllMsgSentList(mjonMsgSentVO);
model.addAttribute("resultAllSentList", resultAllSentList);
model.addAttribute("resultAllSentCnt", resultAllSentList.size());
model.addAttribute("searchKeyword", mjonMsgSentVO.getSearchKeyword());
paginationInfo.setTotalRecordCount( resultAllSentList.size()> 0 ? (Integer.parseInt((resultAllSentList.get(0)).getTotMsgCnt())) : 0);
model.addAttribute("paginationInfo", paginationInfo);
model.addAttribute("totalRecordCount", paginationInfo.getTotalRecordCount());
//발송 결과 성공 실패 건수 리스트 불러오기
List<MjonMsgSentVO> resultMsgSucFailList = new ArrayList<MjonMsgSentVO>();
if(resultAllSentList.size() > 0) {
System.out.println("=====resultMsgSucFailList=====");
resultMsgSucFailList = mjonMsgSentService.selectAllMsgSentSucFailList(resultAllSentList, mjonMsgSentVO);
System.out.println("//=====resultMsgSucFailList=====");
}
model.addAttribute("resultMsgSucFailList", resultMsgSucFailList);
model.addAttribute("mjonMsgSentVO", mjonMsgSentVO);
String stateType = mjonMsgSentVO.getStateType();
// String pageUrl = "web/msgsent/MsgSentAllListAjax";
String pageUrl = "web/msgsent/MsgSentAllListAjax";
if(stateType.equals("ready")) {
pageUrl = "web/msgsent/MsgSentReadyListAjax";
}else if(stateType.equals("complete")) {
pageUrl = "web/msgsent/MsgSentCompleteListAjax";
}else if(stateType.equals("fail")) {
pageUrl = "web/msgsent/MsgSentFailListAjax";
}
log.info(" :: pageUrl [{}]", pageUrl);
return pageUrl;
}

View File

@ -3,8 +3,9 @@
========= ======= =================================================
2021.06.21 우영두
-->
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Msg">
<typeAlias alias="mjonMsgSWFDTO" type="itn.let.mjo.msgsent.service.MjonMsgSWFDTO"/>
<typeAlias alias="mjonMsgSentVO" type="itn.let.mjo.msgsent.service.MjonMsgSentVO"/>
<typeAlias alias="mjonMsgVO" type="itn.let.mjo.msg.service.MjonMsgVO"/>
<typeAlias alias="addrGroupVO" type="itn.let.mjo.addr.service.AddrGroupVO"/>
@ -222,6 +223,220 @@
</select>
<!-- 전체 발송결과 조회 (전송사별) 카운트-->
<select id="MjonMsgSentDAO.countAllMsgSentList" parameterClass="mjonMsgSentVO" resultClass="int">
select
COUNT(DISTINCT B.MSG_GROUP_ID) as totalGroupCount
from
MJ_MSG_DATA A
join MJ_MSG_GROUP_DATA B on
A.MSG_GROUP_ID = B.MSG_GROUP_ID
WHERE (B.DEL_FLAG = 'N' OR B.DEL_FLAG IS NULL)
AND A.DEL_FLAG = 'N'
AND B.USER_ID = #userId#
AND B.RESERVE_C_YN = 'N'
<![CDATA[
AND B.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)
]]>
<isNotEmpty property="searchMsgType">
<isEqual property="searchMsgType" compareValue="S">
AND B.MSG_TYPE = '4'
</isEqual>
<isEqual property="searchMsgType" compareValue="L">
AND B.MSG_TYPE = '6'
AND B.FILE_CNT = '0'
</isEqual>
<isEqual property="searchMsgType" compareValue="M">
<![CDATA[
AND B.MSG_TYPE = '6'
AND B.FILE_CNT > '0'
]]>
</isEqual>
</isNotEmpty>
<isNotEmpty property="searchKeyword">
<isEqual property="searchCondition" compareValue="1" >
AND B.SUBJECT LIKE CONCAT('%', #searchKeyword#, '%')
</isEqual>
<isEqual property="searchCondition" compareValue="2" >
AND B.CALL_FROM LIKE CONCAT('%', #searchKeyword#, '%')
</isEqual>
<isEqual property="searchCondition" compareValue="3" >
AND CALL_TO LIKE CONCAT('%', #searchKeyword#, '%')
</isEqual>
</isNotEmpty>
<isNotEmpty property="searchCondition_01">
AND sendKind = #searchCondition_01#
</isNotEmpty>
<isNotEmpty property="startDate">
<![CDATA[
AND DATE_FORMAT(REGDATE, '%Y-%m-%d') >= DATE_FORMAT(#startDate#, '%Y-%m-%d')
]]>
</isNotEmpty>
<isNotEmpty property="endDate">
<![CDATA[
AND DATE_FORMAT(REGDATE, '%Y-%m-%d') <= DATE_FORMAT(#endDate#, '%Y-%m-%d')
]]>
</isNotEmpty>
</select>
<!-- 전체 발송결과 조회 (전송사별) 카운트-->
<select id="MjonMsgSentDAO.findBySWF" parameterClass="String" resultClass="mjonMsgSWFDTO">
select
SUM(IF(aa.result = 'S', 1, 0)) AS resultSValue,
SUM(IF(aa.result = 'W', 1, 0)) AS resultWValue,
SUM(IF(aa.result = 'F', 1, 0)) AS resultFValue
from
(
select
case
when A.AGENT_CODE = '01'
and ( A.RSLT_CODE = '100'
and (A.RSLT_CODE2 = '0')) then 'S'
when A.AGENT_CODE = '02'
and (A.RSLT_CODE = '0') then 'S'
when A.AGENT_CODE = '03'
and (A.RSLT_CODE = '100'
or A.RSLT_CODE = '101'
or A.RSLT_CODE = '110'
or A.RSLT_CODE = '800') then 'S'
when
A.AGENT_CODE = '04'
and (A.RSLT_CODE = '4100'
or A.RSLT_CODE = '6600'
or A.RSLT_CODE = '7000') then 'S'
when
A.AGENT_CODE = '05'
and (A.RSLT_CODE = '1000'
or A.RSLT_CODE = '1001') then 'S'
when
A.AGENT_CODE = '07'
and (A.RSLT_CODE = '6'
or A.RSLT_CODE = '1000') then 'S'
when
A.AGENT_CODE = '08'
and (A.RSLT_CODE = '1000'
or A.RSLT_CODE = '1001') then 'S'
when
A.AGENT_CODE = '09'
and (A.RSLT_CODE = '1000'
or A.RSLT_CODE = '1001') then 'S'
when (
A.RSLT_CODE is null
and A.RSLT_CODE2 is null
and A.SENT_DATE is null
and A.RSLT_DATE is null ) then 'W'
else 'F'
end as result /* common query */
from
MJ_MSG_DATA A
where
A.MSG_GROUP_ID = #msgGroupId#
) aa
</select>
<!-- 전체 발송결과 조회 (전송사별)-->
<select id="MjonMsgSentDAO.selectAllMsgSentList_advc" parameterClass="mjonMsgSentVO" resultClass="mjonMsgSentVO">
SELECT
B.USER_ID as userId
, B.MSG_GROUP_ID as msgGroupId
, B.MSG_GROUP_CNT as msgGroupCnt
, B.SMS_TXT as smsTxt
, B.SUBJECT as subject
, DATE_FORMAT(B.REGDATE, '%Y-%m-%d %T') AS regdate
, DATE_FORMAT(B.REQ_DATE, '%Y-%m-%d %T') AS reqDate
, (
CASE
WHEN B.DELAY_YN = 'Y' AND B.DELAY_COMPLETE_YN = 'N' THEN DATE_ADD(B.REQ_DATE, INTERVAL -30 MINUTE)
ELSE B.REQ_DATE
END
) AS delayOrgTime
, B.CALL_FROM as callFrom
, B.TOT_PRICE as totPrice
, B.EACH_PRICE as eachPrice
, B.MSG_TYPE as msgType
, B.FILE_CNT as fileCnt
, B.AGENT_CODE as agentCode
, B.RESERVE_C_YN as reserveCYn
, B.CANCELDATE as canceldate
, B.DEL_FLAG as delFlag
, B.SEND_KIND as sendKind
, B.MSG_KIND as msgKind
, B.DELAY_YN as delayYn
, B.DELAY_COMPLETE_YN as delayCompleteYn
FROM MJ_MSG_DATA A
JOIN MJ_MSG_GROUP_DATA B ON A.MSG_GROUP_ID = B.MSG_GROUP_ID
WHERE (B.DEL_FLAG = 'N' OR B.DEL_FLAG IS NULL)
AND A.DEL_FLAG = 'N'
AND B.RESERVE_C_YN = 'N'
AND B.USER_ID = #userId#
<![CDATA[
AND B.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)
]]>
<isNotEmpty property="searchMsgType">
<isEqual property="searchMsgType" compareValue="S">
AND B.MSG_TYPE = '4'
</isEqual>
<isEqual property="searchMsgType" compareValue="L">
AND B.MSG_TYPE = '6'
AND B.FILE_CNT = '0'
</isEqual>
<isEqual property="searchMsgType" compareValue="M">
<![CDATA[
AND B.MSG_TYPE = '6'
AND B.FILE_CNT > '0'
]]>
</isEqual>
</isNotEmpty>
<isNotEmpty property="searchKeyword">
<isEqual property="searchCondition" compareValue="1" >
AND B.SUBJECT LIKE CONCAT('%', #searchKeyword#, '%')
</isEqual>
<isEqual property="searchCondition" compareValue="2" >
AND B.CALL_FROM LIKE CONCAT('%', #searchKeyword#, '%')
</isEqual>
<isEqual property="searchCondition" compareValue="3" >
AND CALL_TO LIKE CONCAT('%', #searchKeyword#, '%')
</isEqual>
</isNotEmpty>
<isNotEmpty property="searchCondition_01">
AND sendKind = #searchCondition_01#
</isNotEmpty>
<isNotEmpty property="startDate">
<![CDATA[
AND DATE_FORMAT(REGDATE, '%Y-%m-%d') >= DATE_FORMAT(#startDate#, '%Y-%m-%d')
]]>
</isNotEmpty>
<isNotEmpty property="endDate">
<![CDATA[
AND DATE_FORMAT(REGDATE, '%Y-%m-%d') <= DATE_FORMAT(#endDate#, '%Y-%m-%d')
]]>
</isNotEmpty>
GROUP BY B.MSG_GROUP_ID
ORDER BY 1=1
<isNotEmpty property="searchSortCnd">
<isEqual property="searchSortCnd" compareValue="curState">
, curState $searchSortOrd$
, orderByrsltCode
</isEqual>
<isNotEqual property="searchSortCnd" compareValue="curState">
,$searchSortCnd$
</isNotEqual>
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
<!-- 전체 발송결과 조회 (전송사별)-->
<select id="MjonMsgSentDAO.selectAllMsgSentList" parameterClass="mjonMsgSentVO" resultClass="mjonMsgSentVO">
SELECT

View File

@ -58,18 +58,11 @@ $(document).ready(function(){
}
});
if($("#tdType").val() == "groupList"){
$('td[name="listTd"]').attr("rowspan", "2")
}else{
$('tr[name="listTr"]').remove();
$('td[name="listSucc"]').remove();
}
});
</script>
<div class="list_info">
<input type="hidden" id="tdType" value="${mjonMsgSentVO.listType}">
<p>총 <span class="c_e40000"><c:out value="${totalRecordCount}"/></span>건</p>
<p>총 <span class="c_e40000" id="testId"><c:out value="${totalRecordCount}"/></span>건</p>
<div>
<label for="pageUnit" class="label">줄보기 선택</label>
<select id="pageUnit" name="pageUnit" class="selType2">
@ -84,104 +77,86 @@ $(document).ready(function(){
<div class="tb_wrap">
<table class="tType4">
<colgroup>
<col style="width: 40px;">
<col style="width: 45px;">
<col style="width: 12%;">
<col style="width: 8%;">
<col style="width: 90px;">
<col style="width: 10%;">
<col style="width: 15%;">
<col style="width: 12%;">
<col style="width: auto;">
<col style="width: 8%;">
<c:if test="${mjonMsgSentVO.listType eq 'groupList'}">
<col style="width: 8%;">
<col style="width: 8%;">
</c:if>
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 11%;">
</colgroup>
<thead>
<tr>
<th>
<th rowspan="2">
<label for="allCheck" class="label">전체 선택</label>
<input type="checkbox" id="allCheck" name="allCheck">
</th>
<th>발송일시
<th rowspan="2">발송일시
<div class="sort_wrap">
<input type="button" class="sort sortBtn" id="sort_reqdate">
</div>
</th>
<th>형태
<th rowspan="2">형태
<div class="sort_wrap">
<input type="button" class="sort sortBtn" id="sort_orderByCode">
</div>
</th>
<th>발송방식
<!-- <th>발송방식
<div class="sort_wrap">
<input type="button" class="sort sortBtn" id="sort_sendKind">
</div>
</th>
<th>내용</th>
<th>받는사람
</th> -->
<th rowspan="2">내용</th>
<!-- <th>받는사람
<div class="sort_wrap">
<input type="button" class="sort sortBtn" id="sort_callTo">
</div>
</th>
<th>발신번호
</th> -->
<!-- <th>발신번호
<div class="sort_wrap">
<input type="button" class="sort sortBtn" id="sort_callFrom">
</div>
</th>
<c:if test="${mjonMsgSentVO.listType eq 'groupList'}">
<th>
</th> -->
<th rowspan="2">
발송건수
<div class="sort_wrap">
<input type="button" class="sort sortBtn" id="sort_msgGroupCnt">
</div>
</th>
</c:if>
<th>결과</th>
<c:if test="${mjonMsgSentVO.listType eq 'groupList'}">
<th>건수</th>
</c:if>
<th>금액</th>
<th colspan="4">결과</th>
<th rowspan="2">금액</th>
<th rowspan="2">예약관리</th>
<!-- <th>금액</th> -->
</tr>
<tr>
<th>대기</th>
<th>성공</th>
<th>실패</th>
<th>예약</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${not empty resultAllSentList}">
<c:forEach var="resultAllSentList" items="${resultAllSentList}" varStatus="status">
<c:set var="replaceCnt" value="0" />
<c:set var="electionCnt" value="0" />
<c:set var="advertisementCnt" value="0" />
<c:if test="${fn:indexOf(resultAllSentList.smsTxt,'[*이름*]') != -1 || fn:indexOf(resultAllSentList.smsTxt,'[*1*]') != -1 || fn:indexOf(resultAllSentList.smsTxt,'[*2*]') != -1 || fn:indexOf(resultAllSentList.smsTxt,'[*3*]') != -1 || fn:indexOf(resultAllSentList.smsTxt,'[*4*]') != -1}">
<c:set var="replaceCnt" value="1" />
</c:if>
<c:if test="${fn:indexOf(resultAllSentList.smsTxt,'(선거운동정보)') == 0}">
<c:set var="electionCnt" value="1" />
</c:if>
<c:if test="${fn:indexOf(resultAllSentList.smsTxt,'(광고)') == 0}">
<c:set var="advertisementCnt" value="1" />
</c:if>
<tr>
<td name="listTd">
<td>
<label for="msgSentDel${status.count}" class="label">선택</label>
<c:choose>
<c:when test="${resultAllSentList.curState == '0'}">
<input type="checkbox" id="msgSentDel${status.count}" name="msgSentDel" value="${resultAllSentList.msgGroupId}" disabled>
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${mjonMsgSentVO.listType == 'groupList'}">
<input type="checkbox" id="msgSentDel${status.count}" name="msgSentDel" value="${resultAllSentList.msgGroupId}">
</c:when>
<c:otherwise>
<input type="checkbox" id="msgSentDel${status.count}" name="msgSentDel" value="${resultAllSentList.msgSeq}">
</c:otherwise>
</c:choose>
</c:otherwise>
<c:when test="${mjonMsgSentVO.listType == 'groupList'}">
<input type="checkbox" id="msgSentDel${status.count}" name="msgSentDel" value="${resultAllSentList.msgGroupId}">
</c:when>
</c:choose>
</td>
<td name="listTd">
<td>
<c:choose>
<c:when test="${resultAllSentList.delayYn eq 'Y' && resultAllSentList.delayCompleteYn eq 'N'}">
@ -205,7 +180,7 @@ $(document).ready(function(){
</c:otherwise>
</c:choose>
</td>
<td name="listTd">
<td>
<p>
<c:choose>
<c:when test="${resultAllSentList.msgType eq '6' && resultAllSentList.fileCnt eq 0 }">
@ -220,239 +195,40 @@ $(document).ready(function(){
</c:choose>
</p>
</td>
<td name="listTd">
<p>
<c:choose>
<c:when test="${resultAllSentList.sendKind eq 'H' }">
WEB
</c:when>
<c:when test="${resultAllSentList.sendKind eq 'A'}">
API
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</p>
<td class="result_cont" title="${resultAllSentList.smsTxt}">
<a href="#none" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllSentList.msgGroupId}','${resultAllSentList.msgId}','${resultAllSentList.fileCnt}'); return false;">
<%-- <button class="btnType btnType20" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllSentList.msgGroupId}','${resultAllSentList.msgId}','${resultAllSentList.fileCnt}'); return false;">상세보기</button> --%>
<c:out value="${fn:substring(resultAllSentList.smsTxt, 0, 20)}" />
<c:if test="${fn:length(resultAllSentList.smsTxt) > 20}">...</c:if>
</a>
</td>
<td name="listTd">
<button class="btnType btnType20" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllSentList.msgGroupId}','${resultAllSentList.msgId}','${resultAllSentList.fileCnt}'); return false;">상세보기</button>
<button class="btnType btnType20" onClick="javascript:fnMjMsgReSendAll('${resultAllSentList.msgGroupId}','${replaceCnt}','${electionCnt}','${advertisementCnt}'); return false;">재전송</button>
<td>
<p><c:out value="${resultAllSentList.msgGroupCnt}"/> </p>
</td>
<td name="listTd">
<c:choose>
<c:when test="${mjonMsgSentVO.listType == 'groupList'}">
<c:choose>
<c:when test="${resultAllSentList.msgGroupCnt > 1}">
<p>
<c:choose>
<c:when test="${resultAllSentList.addrNm ne '-' and resultAllSentList.addrNm ne ''}">
<c:out value="${resultAllSentList.addrNm}"/>
</c:when>
<c:otherwise>
<c:out value="${resultAllSentList.callToComma}"/>
</c:otherwise>
</c:choose> 외 <fmt:formatNumber value="${resultAllSentList.msgGroupCnt - 1}" pattern="#,###"/>명
</p>
</c:when>
<c:when test="${resultAllSentList.addrNm ne '-' and resultAllSentList.addrNm ne ''}">
<p><c:out value="${resultAllSentList.addrNm}"/></p>
</c:when>
<c:otherwise>
<p><c:out value="${resultAllSentList.callToComma}"/></p>
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${resultAllSentList.addrNm ne '-' and resultAllSentList.addrNm ne ''}">
<p><c:out value="${resultAllSentList.addrNm}"/></p>
</c:when>
<c:otherwise>
<p><c:out value="${resultAllSentList.callToComma}"/></p>
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
<td>
<p><c:out value="${resultAllSentList.resultWValue}"/> </p>
</td>
<td name="listTd">
<p><c:out value="${resultAllSentList.callFromComma}"/></p>
<td>
<p><c:out value="${resultAllSentList.resultSValue}"/> </p>
</td>
<c:if test="${mjonMsgSentVO.listType eq 'groupList'}">
<td name="listTd">
<p><c:out value="${resultAllSentList.msgGroupCnt}"/></p>
<td>
<p><c:out value="${resultAllSentList.resultFValue}"/> </p>
</td>
</c:if>
<!-- 발송 성공/실패 listType에 따른 전송건별(groupList), 개인별 리스트 처리-->
<c:set var="succ" value="0"/> <!-- 정상수신-->
<c:set var="fail" value="0"/> <!-- 수신실패-->
<c:set var="wait" value="0"/> <!-- 결과대기-->
<c:set var="succPrice" value="0"/> <!-- 정상수신 가격-->
<c:set var="failPrice" value="0"/> <!-- 수신실패 가격-->
<c:set var="waitPrice" value="0"/> <!-- 결과대기 가격-->
<c:set var="msgResultSts" value=""/><!-- 결과상태 확인 -->
<c:forEach var="resultMsgSFList" items="${resultMsgSucFailList}" varStatus="status">
<c:choose>
<c:when test="${mjonMsgSentVO.listType == 'groupList'}">
<c:if test="${resultAllSentList.msgGroupId == resultMsgSFList.msgGroupId}">
<c:if test="${resultMsgSFList.msgResultSts == 'S'}">
<c:set var="succ" value="${resultMsgSFList.msgResultCnt}"/>
<c:set var="succPrice" value="${resultMsgSFList.eachPrice * succ}"/>
</c:if>
<c:if test="${resultMsgSFList.msgResultSts == 'F'}">
<c:set var="fail" value="${resultMsgSFList.msgResultCnt}"/>
<c:set var="failPrice" value="${resultMsgSFList.eachPrice * fail}"/>
</c:if>
<c:if test="${resultMsgSFList.msgResultSts == 'W'}">
<c:set var="wait" value="${resultMsgSFList.msgResultCnt}"/>
<c:set var="waitPrice" value="${resultMsgSFList.eachPrice * wait}"/>
</c:if>
</c:if>
</c:when>
<c:otherwise>
<c:if test="${resultAllSentList.msgGroupId == resultMsgSFList.msgGroupId && resultAllSentList.msgSeq == resultMsgSFList.msgSeq}">
<c:set var="msgResultSts" value="${resultMsgSFList.msgResultSts}"/>
<c:if test="${resultMsgSFList.msgResultSts == 'S'}">
<c:set var="succ" value="${resultMsgSFList.msgResultCnt}"/>
<c:set var="succPrice" value="${resultMsgSFList.eachPrice * succ}"/>
</c:if>
<c:if test="${resultMsgSFList.msgResultSts == 'F'}">
<c:set var="fail" value="${resultMsgSFList.msgResultCnt}"/>
<c:set var="failPrice" value="${resultMsgSFList.eachPrice * fail}"/>
</c:if>
<c:if test="${resultMsgSFList.msgResultSts == 'W'}">
<c:set var="wait" value="${resultMsgSFList.msgResultCnt}"/>
<c:set var="waitPrice" value="${resultMsgSFList.eachPrice * wait}"/>
</c:if>
</c:if>
</c:otherwise>
</c:choose>
</c:forEach>
<td name="listSucc">
<p class="fwRg c_002c9a">정상수신</p>
<td>
<p class="c_222">0</p>
</td>
<td name="listSucc">
<c:choose>
<c:when test="${mjonMsgSentVO.listType == 'groupList' && succ > 0}">
<p class="fwRg c_002c9a" onclick="javascript:fnMsgSFDetailList('${resultAllSentList.msgGroupId}', 'S'); return false;" style="cursor:pointer;"><fmt:formatNumber value="${succ}" pattern="#,###.#"/></p>
</c:when>
<c:otherwise>
<p class="fwRg c_002c9a"><fmt:formatNumber value="${succ}" pattern="#,###.#"/></p>
</c:otherwise>
</c:choose>
</td>
<!-- 과금/비과금 -->
<td name="listSucc">
<p class="fwRg c_002c9a">
<c:choose>
<c:when test="${succPrice > 0}">
<fmt:formatNumber value="${succPrice}" pattern="#,###.#"/>
</c:when>
<c:otherwise>
0
</c:otherwise>
</c:choose>
</p>
<td>
<c:out value="${resultAllSentList.totPrice}"/>원
</td>
<td>-</td>
<c:if test="${mjonMsgSentVO.listType != 'groupList'}">
<c:if test="${msgResultSts == 'S'}">
<td>
<p class="fwRg c_002c9a">정상수신</p>
</td>
<!-- 과금/비과금 -->
<td>
<p class="fwRg c_002c9a">
<c:choose>
<c:when test="${succPrice > 0}">
<fmt:formatNumber value="${succPrice}" pattern="#,###.#"/>
</c:when>
<c:otherwise>
0
</c:otherwise>
</c:choose>
</p>
</td>
</c:if>
<c:if test="${msgResultSts == 'F'}">
<td>
<p class="fwRg c_e40000">수신오류</p>
</td>
<!-- 과금/비과금 -->
<td>
<p class="fwRg c_e40000">
<c:choose>
<c:when test="${failPrice > 0}">
<fmt:formatNumber value="${failPrice}" pattern="#,###.#"/>
</c:when>
<c:otherwise>
0
</c:otherwise>
</c:choose>
</p>
</td>
</c:if>
<c:if test="${msgResultSts == 'W'}">
<td>
<p class="fwRg c_e40000">결과대기</p>
</td>
<!-- 과금/비과금 -->
<td>
<p class="fwRg c_e40000">
<c:choose>
<c:when test="${waitPrice > 0}">
<fmt:formatNumber value="${waitPrice}" pattern="#,###.#"/>
</c:when>
<c:otherwise>
0
</c:otherwise>
</c:choose>
</p>
</td>
</c:if>
</c:if>
</tr>
<tr name="listTr">
<td>
<p class="c_222">실패/대기</p>
</td>
<td>
<c:choose>
<c:when test="${mjonMsgSentVO.listType == 'groupList' && (fail+wait) > 0}">
<p class="c_222" onclick="javascript:fnMsgSFDetailList('${resultAllSentList.msgGroupId}', 'F'); return false;" style="cursor:pointer;">
<fmt:formatNumber value="${fail}" pattern="#,###"/> / <fmt:formatNumber value="${wait}" pattern="#,###"/>
</p>
</c:when>
<c:otherwise>
<p class="c_222">
<fmt:formatNumber value="${fail}" pattern="#,###"/> / <fmt:formatNumber value="${wait}" pattern="#,###"/>
</p>
</c:otherwise>
</c:choose>
</td>
<td>
<p class="c_222">
<c:choose>
<c:when test="${(failPrice+waitPrice) > 0}">
<fmt:formatNumber value="${(failPrice+waitPrice)}" pattern="#,###.#"/>
</c:when>
<c:otherwise>
0
</c:otherwise>
</c:choose>
</p>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<c:if test="${mjonMsgSentVO.listType eq 'groupList'}">
<td colspan="11">발송 내역이 없습니다.</td>
</c:if>
<c:if test="${mjonMsgSentVO.listType ne 'groupList'}">
<td colspan="9">발송 내역이 없습니다.</td>
</c:if>
<td colspan="11">발송 내역이 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>

View File

@ -0,0 +1,479 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page import="itn.com.cmm.LoginVO" %>
<script src="/publish/js/content.js"></script>
<script src="/publish/js/popupLayer.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var startDate = '${startDate}';
var endDate = '${endDate}';
// DatePicker 값 수정
var startDatePicker = $('#startDate').pickadate('picker');
startDatePicker.set('select', startDate, { format: 'yyyy/mm/dd' });
startDatePicker = $('#endDate').pickadate('picker');
startDatePicker.set('select', endDate, { format: 'yyyy/mm/dd' });
/* 목록 정렬 항목 아이콘 표시 */
var searchSortCnd = $("[name='searchSortCnd']").val();
var searchSortOrd = $("[name='searchSortOrd']").val();
if (searchSortCnd != "" && searchSortOrd != "" && searchSortCnd != undefined && searchSortOrd != undefined) {
var $sort_div = $("#sort_"+ searchSortCnd);
var sortClass = 'sortBtn' ;
if (searchSortOrd == "desc") sortClass = "sortBtnDesc";
$sort_div.replaceClass('sortBtn' , sortClass) ;
$sort_div.attr("sortOrd", searchSortOrd);
}
//체크박스 전체 선택 및 해제
var allChkSts = false;
$("#allCheck").click(function(){
if(!allChkSts){// 전체선택이 해제되어 있을 경우
$("input[name=msgSentDel]").prop("checked", true);
allChkSts = true;
//발송 대기건은 선택 삭제가 안되도록 처리함
$("input:checkbox[name='msgSentDel']:checked").each(function(index){
var disabledChk = $(this).prop('disabled');
if(disabledChk){ //checkbox disabled 인 것은 제외하고 아이디 저장
$(this).prop("checked", false);
}
});
}else{
$("input[name=msgSentDel]").prop("checked", false);
allChkSts = false;
}
});
if($("#tdType").val() == "groupList"){
$('.listTd').attr("rowspan", "2")
}else{
$('.listTr').remove();
$('.listSucc').remove();
}
});
</script>
<div class="list_info">
<input type="hidden" id="tdType" value="${mjonMsgSentVO.listType}">
<p>총 <span class="c_e40000"><c:out value="${totalRecordCount}"/></span>건</p>
<div>
<label for="pageUnit" class="label">줄보기 선택</label>
<select id="pageUnit" name="pageUnit" class="selType2">
<option value="10" <c:if test="${paginationInfo.recordCountPerPage == '10'}">selected</c:if> >10개보기</option>
<option value="20" <c:if test="${paginationInfo.recordCountPerPage == '20'}">selected</c:if> >20개보기</option>
<option value="30" <c:if test="${paginationInfo.recordCountPerPage == '30'}">selected</c:if> >30개보기</option>
<option value="100" <c:if test="${paginationInfo.recordCountPerPage == '100'}">selected</c:if> >100개보기</option>
</select>
</div>
</div>
<!-- 받는사람(전송건별) - 전체 -->
<div class="tb_wrap">
<table class="tType4">
<colgroup>
<col style="width: 40px;">
<col style="width: 12%;">
<col style="width: 8%;">
<col style="width: 90px;">
<col style="width: 10%;">
<col style="width: 15%;">
<col style="width: 12%;">
<col style="width: 8%;">
<c:if test="${mjonMsgSentVO.listType eq 'groupList'}">
<col style="width: 8%;">
<col style="width: 8%;">
</c:if>
</colgroup>
<thead>
<tr>
<th>
<label for="allCheck" class="label">전체 선택</label>
<input type="checkbox" id="allCheck" name="allCheck">
</th>
<th>발송일시
<div class="sort_wrap">
<input type="button" class="sort sortBtn" id="sort_reqdate">
</div>
</th>
<th>형태
<div class="sort_wrap">
<input type="button" class="sort sortBtn" id="sort_orderByCode">
</div>
</th>
<th>발송방식
<div class="sort_wrap">
<input type="button" class="sort sortBtn" id="sort_sendKind">
</div>
</th>
<th>내용</th>
<th>받는사람
<div class="sort_wrap">
<input type="button" class="sort sortBtn" id="sort_callTo">
</div>
</th>
<th>발신번호
<div class="sort_wrap">
<input type="button" class="sort sortBtn" id="sort_callFrom">
</div>
</th>
<c:if test="${mjonMsgSentVO.listType eq 'groupList'}">
<th>
발송건수
<div class="sort_wrap">
<input type="button" class="sort sortBtn" id="sort_msgGroupCnt">
</div>
</th>
</c:if>
<th>결과</th>
<c:if test="${mjonMsgSentVO.listType eq 'groupList'}">
<th>건수</th>
</c:if>
<th>금액</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${not empty resultAllSentList}">
<c:forEach var="resultAllSentList" items="${resultAllSentList}" varStatus="status">
<c:set var="replaceCnt" value="0" />
<c:set var="electionCnt" value="0" />
<c:set var="advertisementCnt" value="0" />
<c:if test="${fn:indexOf(resultAllSentList.smsTxt,'[*이름*]') != -1 || fn:indexOf(resultAllSentList.smsTxt,'[*1*]') != -1 || fn:indexOf(resultAllSentList.smsTxt,'[*2*]') != -1 || fn:indexOf(resultAllSentList.smsTxt,'[*3*]') != -1 || fn:indexOf(resultAllSentList.smsTxt,'[*4*]') != -1}">
<c:set var="replaceCnt" value="1" />
</c:if>
<c:if test="${fn:indexOf(resultAllSentList.smsTxt,'(선거운동정보)') == 0}">
<c:set var="electionCnt" value="1" />
</c:if>
<c:if test="${fn:indexOf(resultAllSentList.smsTxt,'(광고)') == 0}">
<c:set var="advertisementCnt" value="1" />
</c:if>
<tr>
<td class="listTd">
<label for="msgSentDel${status.count}" class="label">선택</label>
<c:choose>
<c:when test="${resultAllSentList.curState == '0'}">
<input type="checkbox" id="msgSentDel${status.count}" name="msgSentDel" value="${resultAllSentList.msgGroupId}" disabled>
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${mjonMsgSentVO.listType == 'groupList'}">
<input type="checkbox" id="msgSentDel${status.count}" name="msgSentDel" value="${resultAllSentList.msgGroupId}">
</c:when>
<c:otherwise>
<input type="checkbox" id="msgSentDel${status.count}" name="msgSentDel" value="${resultAllSentList.msgSeq}">
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
</td>
<td class="listTd">
<c:choose>
<c:when test="${resultAllSentList.delayYn eq 'Y' && resultAllSentList.delayCompleteYn eq 'N'}">
<c:choose>
<c:when test="${resultAllSentList.curState eq '0'}">
<%--
20240906 추가
발송 대기 상태일 때만 원래 발송시간을 보여주고, 발송이 완료되면 발송 처리 완료 시간(reqDate)을 보여준다.
30분 딜레이 된 건으로 관리자 승인/취소 처리가 완료 되지 않은 건에 대해서 -30분 처리하여 원래 사용자가 보내려던 시간을 표시해줌
--%>
<p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.delayOrgTime}" /></p>
</c:when>
<c:otherwise>
<p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.reqdate}" /></p>
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
<p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.reqdate}" /></p>
</c:otherwise>
</c:choose>
</td>
<td class="listTd">
<p>
<c:choose>
<c:when test="${resultAllSentList.msgType eq '6' && resultAllSentList.fileCnt eq 0 }">
장문
</c:when>
<c:when test="${resultAllSentList.msgType eq '6' && resultAllSentList.fileCnt ne 0 }">
그림
</c:when>
<c:otherwise>
단문
</c:otherwise>
</c:choose>
</p>
</td>
<td class="listTd">
<p>
<c:choose>
<c:when test="${resultAllSentList.sendKind eq 'H' }">
WEB
</c:when>
<c:when test="${resultAllSentList.sendKind eq 'A'}">
API
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</p>
</td>
<td class="listTd">
<button class="btnType btnType20" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllSentList.msgGroupId}','${resultAllSentList.msgId}','${resultAllSentList.fileCnt}'); return false;">상세보기</button>
<button class="btnType btnType20" onClick="javascript:fnMjMsgReSendAll('${resultAllSentList.msgGroupId}','${replaceCnt}','${electionCnt}','${advertisementCnt}'); return false;">재전송</button>
</td>
<td class="listTd">
<c:choose>
<c:when test="${mjonMsgSentVO.listType == 'groupList'}">
<c:choose>
<c:when test="${resultAllSentList.msgGroupCnt > 1}">
<p>
<c:choose>
<c:when test="${resultAllSentList.addrNm ne '-' and resultAllSentList.addrNm ne ''}">
<c:out value="${resultAllSentList.addrNm}"/>
</c:when>
<c:otherwise>
<c:out value="${resultAllSentList.callToComma}"/>
</c:otherwise>
</c:choose> 외 <fmt:formatNumber value="${resultAllSentList.msgGroupCnt - 1}" pattern="#,###"/>명
</p>
</c:when>
<c:when test="${resultAllSentList.addrNm ne '-' and resultAllSentList.addrNm ne ''}">
<p><c:out value="${resultAllSentList.addrNm}"/></p>
</c:when>
<c:otherwise>
<p><c:out value="${resultAllSentList.callToComma}"/></p>
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${resultAllSentList.addrNm ne '-' and resultAllSentList.addrNm ne ''}">
<p><c:out value="${resultAllSentList.addrNm}"/></p>
</c:when>
<c:otherwise>
<p><c:out value="${resultAllSentList.callToComma}"/></p>
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
</td>
<td class="listTd">
<p><c:out value="${resultAllSentList.callFromComma}"/></p>
</td>
<c:if test="${mjonMsgSentVO.listType eq 'groupList'}">
<td class="listTd">
<p><c:out value="${resultAllSentList.msgGroupCnt}"/></p>
</td>
</c:if>
<!-- 발송 성공/실패 listType에 따른 전송건별(groupList), 개인별 리스트 처리-->
<c:set var="succ" value="0"/> <!-- 정상수신-->
<c:set var="fail" value="0"/> <!-- 수신실패-->
<c:set var="wait" value="0"/> <!-- 결과대기-->
<c:set var="succPrice" value="0"/> <!-- 정상수신 가격-->
<c:set var="failPrice" value="0"/> <!-- 수신실패 가격-->
<c:set var="waitPrice" value="0"/> <!-- 결과대기 가격-->
<c:set var="msgResultSts" value=""/><!-- 결과상태 확인 -->
<c:forEach var="resultMsgSFList" items="${resultMsgSucFailList}" varStatus="status">
<c:choose>
<c:when test="${mjonMsgSentVO.listType == 'groupList'}">
<c:if test="${resultAllSentList.msgGroupId == resultMsgSFList.msgGroupId}">
<c:if test="${resultMsgSFList.msgResultSts == 'S'}">
<c:set var="succ" value="${resultMsgSFList.msgResultCnt}"/>
<c:set var="succPrice" value="${resultMsgSFList.eachPrice * succ}"/>
</c:if>
<c:if test="${resultMsgSFList.msgResultSts == 'F'}">
<c:set var="fail" value="${resultMsgSFList.msgResultCnt}"/>
<c:set var="failPrice" value="${resultMsgSFList.eachPrice * fail}"/>
</c:if>
<c:if test="${resultMsgSFList.msgResultSts == 'W'}">
<c:set var="wait" value="${resultMsgSFList.msgResultCnt}"/>
<c:set var="waitPrice" value="${resultMsgSFList.eachPrice * wait}"/>
</c:if>
</c:if>
</c:when>
<c:otherwise>
<c:if test="${resultAllSentList.msgGroupId == resultMsgSFList.msgGroupId && resultAllSentList.msgSeq == resultMsgSFList.msgSeq}">
<c:set var="msgResultSts" value="${resultMsgSFList.msgResultSts}"/>
<c:if test="${resultMsgSFList.msgResultSts == 'S'}">
<c:set var="succ" value="${resultMsgSFList.msgResultCnt}"/>
<c:set var="succPrice" value="${resultMsgSFList.eachPrice * succ}"/>
</c:if>
<c:if test="${resultMsgSFList.msgResultSts == 'F'}">
<c:set var="fail" value="${resultMsgSFList.msgResultCnt}"/>
<c:set var="failPrice" value="${resultMsgSFList.eachPrice * fail}"/>
</c:if>
<c:if test="${resultMsgSFList.msgResultSts == 'W'}">
<c:set var="wait" value="${resultMsgSFList.msgResultCnt}"/>
<c:set var="waitPrice" value="${resultMsgSFList.eachPrice * wait}"/>
</c:if>
</c:if>
</c:otherwise>
</c:choose>
</c:forEach>
<td class="listSucc">
<p class="fwRg c_002c9a">정상수신</p>
</td>
<td class="listSucc">
<c:choose>
<c:when test="${mjonMsgSentVO.listType == 'groupList' && succ > 0}">
<p class="fwRg c_002c9a" onclick="javascript:fnMsgSFDetailList('${resultAllSentList.msgGroupId}', 'S'); return false;" style="cursor:pointer;"><fmt:formatNumber value="${succ}" pattern="#,###.#"/></p>
</c:when>
<c:otherwise>
<p class="fwRg c_002c9a"><fmt:formatNumber value="${succ}" pattern="#,###.#"/></p>
</c:otherwise>
</c:choose>
</td>
<!-- 과금/비과금 -->
<td class="listSucc">
<p class="fwRg c_002c9a">
<c:choose>
<c:when test="${succPrice > 0}">
<fmt:formatNumber value="${succPrice}" pattern="#,###.#"/>
</c:when>
<c:otherwise>
0
</c:otherwise>
</c:choose>
</p>
</td>
<c:if test="${mjonMsgSentVO.listType != 'groupList'}">
<c:if test="${msgResultSts == 'S'}">
<td>
<p class="fwRg c_002c9a">정상수신</p>
</td>
<!-- 과금/비과금 -->
<td>
<p class="fwRg c_002c9a">
<c:choose>
<c:when test="${succPrice > 0}">
<fmt:formatNumber value="${succPrice}" pattern="#,###.#"/>
</c:when>
<c:otherwise>
0
</c:otherwise>
</c:choose>
</p>
</td>
</c:if>
<c:if test="${msgResultSts == 'F'}">
<td>
<p class="fwRg c_e40000">수신오류</p>
</td>
<!-- 과금/비과금 -->
<td>
<p class="fwRg c_e40000">
<c:choose>
<c:when test="${failPrice > 0}">
<fmt:formatNumber value="${failPrice}" pattern="#,###.#"/>
</c:when>
<c:otherwise>
0
</c:otherwise>
</c:choose>
</p>
</td>
</c:if>
<c:if test="${msgResultSts == 'W'}">
<td>
<p class="fwRg c_e40000">결과대기</p>
</td>
<!-- 과금/비과금 -->
<td>
<p class="fwRg c_e40000">
<c:choose>
<c:when test="${waitPrice > 0}">
<fmt:formatNumber value="${waitPrice}" pattern="#,###.#"/>
</c:when>
<c:otherwise>
0
</c:otherwise>
</c:choose>
</p>
</td>
</c:if>
</c:if>
</tr>
<tr class="listTr">
<td>
<p class="c_222">실패/대기</p>
</td>
<td>
<c:choose>
<c:when test="${mjonMsgSentVO.listType == 'groupList' && (fail+wait) > 0}">
<p class="c_222" onclick="javascript:fnMsgSFDetailList('${resultAllSentList.msgGroupId}', 'F'); return false;" style="cursor:pointer;">
<fmt:formatNumber value="${fail}" pattern="#,###"/> / <fmt:formatNumber value="${wait}" pattern="#,###"/>
</p>
</c:when>
<c:otherwise>
<p class="c_222">
<fmt:formatNumber value="${fail}" pattern="#,###"/> / <fmt:formatNumber value="${wait}" pattern="#,###"/>
</p>
</c:otherwise>
</c:choose>
</td>
<td>
<p class="c_222">
<c:choose>
<c:when test="${(failPrice+waitPrice) > 0}">
<fmt:formatNumber value="${(failPrice+waitPrice)}" pattern="#,###.#"/>
</c:when>
<c:otherwise>
0
</c:otherwise>
</c:choose>
</p>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<c:if test="${mjonMsgSentVO.listType eq 'groupList'}">
<td colspan="11">발송 내역이 없습니다.</td>
</c:if>
<c:if test="${mjonMsgSentVO.listType ne 'groupList'}">
<td colspan="9">발송 내역이 없습니다.</td>
</c:if>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<div class="table_btn clearfix">
<div class="table_btn_left">
<!-- 2022.07.04 발송결과 화면에 리스트 선택삭제 기능 제거(카운팅 및 금액 합산 오류 관련) -->
<!-- <button type="button" class="btnType btnType15" onClick="javascript:fnDelete(); return false;"><i class="remove_img"></i>선택삭제</button> -->
<button type="button" data-tooltip="rev_popup02" class="btnType btnType15"><i class="add_img"></i>그룹등록</button>
<button type="button" class="btnType btnType15" onClick="javascript:fnDeleteAddrNo('${mjonMsgSentVO.listType}'); return false;"><i class="remove_img"></i>주소록에서 번호 삭제</button>
<button type="button" class="btnType btnType15" onClick="javascript:fnAddBlockNo('${mjonMsgSentVO.listType}'); return false;"></i>수신거부번호 등록</button>
</div>
<div class="table_btn_right">
<button type="button" class="excel_btn btnType" onClick="javascript:fnExcelDownLoad('all','${mjonMsgSentVO.tabType}'); return false;"><i class="downroad"></i>엑셀 다운로드</button>
<button type="button" class="print_btn btnType" onClick="javascript:fnShowPrintPopup('all','${mjonMsgSentVO.tabType}'); return false;"><i class="print_img"></i>발송결과 출력하기</button>
</div>
</div>
<c:if test="${!empty resultAllSentList}">
<ul class="pagination">
<ui:pagination paginationInfo = "${paginationInfo}" type="imageWeb" jsFunction="linkPage" />
</ul>
</c:if>

View File

@ -744,10 +744,10 @@ function fnMjMsgReSendAll(msgGroupId, replaceCnt, electionCnt, advertisementCnt)
}
//발송결과 - 대기/성공/실패
function subContent(p_content_no){
function subContent(){
var sendData = $(document.listForm).serializeArray();
var v_html_pre = '<table>'
/* var v_html_pre = '<table>'
+ '<caption>구분, 충전금액, 사용금액, 잔액 등 정보를 제공하는 표</caption>'
+ '<colgroup>'
+ '<col style="width: 115px;">'
@ -766,8 +766,8 @@ function subContent(p_content_no){
+ '<tbody>'
+ '<tr><td colspan="4">LOADING...</td></tr>'
+ '</tbody>'
+ '</table>';
+ '</table>';
*/
var v_html_pre = ''
+ '<div class="rev_admin_in">'
+ '<div class="rev_admin_top clearfix">'