From 071fd2b35b101183a79f23a25f1eb9f3a869f86a Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Tue, 14 Jan 2025 10:25:10 +0900 Subject: [PATCH 01/25] =?UTF-8?q?=EB=B0=9C=EC=86=A1=EA=B2=B0=EA=B3=BC=20?= =?UTF-8?q?=EC=83=81=EC=9C=84=20=ED=83=AD=20active=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/kakao/include/KakaoSentTopMentTap.jsp | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KakaoSentTopMentTap.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KakaoSentTopMentTap.jsp index 930800d1..0e019972 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KakaoSentTopMentTap.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KakaoSentTopMentTap.jsp @@ -25,16 +25,23 @@ function initMenuTab(){ console.log('uri:', uri); - if(uri.includes('selectMsgSentView')){ - $('.topTab').removeClass("active"); - $("#smsTab").addClass("active"); - }else if(uri.includes('selectKakaoSentView')){ - $('.topTab').removeClass("active"); - $("#kakaoTab").addClass("active"); - }else if(uri.includes('faxSendList')){ - $('.topTab').removeClass("active"); - $("#faxTab").addClass("active"); + // URI 키워드와 해당 탭 ID를 매핑 + const tabMapping = [ + { keyword: 'selectMsgSentView', tabId: '#smsTab' }, // 'selectMsgSentView' 키워드를 '#smsTab'으로 매핑 + { keyword: 'selectKakaoSentView', tabId: '#kakaoTab' }, // 'selectKakaoSentView' 키워드를 '#kakaoTab'으로 매핑 + { keyword: 'faxSendList', tabId: '#faxTab' } // 'faxSendList' 키워드를 '#faxTab'으로 매핑 + ]; + + // URI에 특정 키워드가 포함되어 있는지 확인하여 활성 탭 정보를 찾음 + const activeTab = tabMapping.find(mapping => uri.includes(mapping.keyword)); // 'uri'에 키워드가 포함된 첫 번째 매핑을 검색 + + // 매칭된 탭이 있으면 UI를 업데이트하여 해당 탭을 활성화 + if (activeTab) { + $('.topTab').removeClass("active"); // 모든 탭에서 "active" 클래스 제거 + $(activeTab.tabId).addClass("active"); // 매핑된 탭 ID에 "active" 클래스 추가 } + + } function fnLinkPageTab(tabInfo){ From d34f626aa08e2f98f93cdfdab6c2028124bdfb85 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 16 Jan 2025 10:56:01 +0900 Subject: [PATCH 02/25] =?UTF-8?q?=EB=B0=9C=EC=86=A1=EA=B2=B0=EA=B3=BC=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=B0=8F=20=EC=86=8D=EB=8F=84?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=20=EC=A7=84=ED=96=89=EC=A4=91=20-=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=EC=88=98=EC=A0=95=20=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mjo/msgsent/service/MjonMsgSWFDTO.java | 32 ++ .../msgsent/service/MjonMsgSentService.java | 6 + .../mjo/msgsent/service/MjonMsgSentVO.java | 399 +-------------- .../msgsent/service/impl/MjonMsgSentDAO.java | 17 + .../service/impl/MjonMsgSentServiceImpl.java | 56 ++ .../msgsent/web/MjonMsgSentController.java | 258 +++++++--- .../sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml | 217 +++++++- .../jsp/web/msgsent/MsgSentAllListAjax.jsp | 338 +++--------- ...sgSentAllListAjax_advc_backup_20250115.jsp | 479 ++++++++++++++++++ .../WEB-INF/jsp/web/msgsent/MsgSentView.jsp | 8 +- 10 files changed, 1047 insertions(+), 763 deletions(-) create mode 100644 src/main/java/itn/let/mjo/msgsent/service/MjonMsgSWFDTO.java create mode 100644 src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax_advc_backup_20250115.jsp diff --git a/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSWFDTO.java b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSWFDTO.java new file mode 100644 index 00000000..ede1b2a6 --- /dev/null +++ b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSWFDTO.java @@ -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; // 대기건수 + +} diff --git a/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentService.java b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentService.java index c0d73343..09eff10f 100644 --- a/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentService.java +++ b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentService.java @@ -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 selectAllMsgSentList(MjonMsgSentVO mjonMsgSentVO) throws Exception; + public Map selectAllMsgSentList_advc(MjonMsgSentVO mjonMsgSentVO) throws Exception; + //발송 관리 전체 발송 리스트 불러오기 => 주소록 조인 제거버전 public List selectAllMsgSentSimpleList(MjonMsgSentVO mjonMsgSentVO) throws Exception; @@ -54,5 +57,8 @@ public interface MjonMsgSentService { //첨부파일 정보 불러오기 public MjonMsgSentVO selectFileInfo(String streFileId) throws Exception; + + public int countAllMsgSentList(MjonMsgSentVO mjonMsgSentVO); + } diff --git a/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java index f7478240..b9758511 100644 --- a/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java +++ b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java @@ -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; - } - } diff --git a/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentDAO.java b/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentDAO.java index bb43a7f0..e749d110 100644 --- a/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentDAO.java +++ b/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentDAO.java @@ -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) list("MjonMsgSentDAO.selectAllMsgSentList",mjonMsgSentVO); } + //발송 관리 전체 발송 리스트 불러오기 + @SuppressWarnings("unchecked") + public List selectAllMsgSentList_advc(MjonMsgSentVO mjonMsgSentVO) throws Exception{ + + return (List) list("MjonMsgSentDAO.selectAllMsgSentList_advc",mjonMsgSentVO); + } + //발송 관리 전체 발송 리스트 불러오기 => 주소록 조인 제거버전 @SuppressWarnings("unchecked") public List 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); + } } diff --git a/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java b/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java index f142d639..a8945faa 100644 --- a/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java +++ b/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java @@ -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 selectAllMsgSentList_advc(MjonMsgSentVO mjonMsgSentVO) throws Exception{ + + + Map resultMap = new HashMap(); + + // 목록 + List resultList = mjonMsgSentDAO.selectAllMsgSentList_advc(mjonMsgSentVO); + + // MsgGroupId만 추출하여 리스트 생성 +// List 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 selectAllMsgSentSimpleList(MjonMsgSentVO mjonMsgSentVO) throws Exception{ List resultList = new ArrayList(); diff --git a/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java b/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java index 89898107..b4fed593 100644 --- a/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java +++ b/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java @@ -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 totalMsgCnt = mjonMsgSentService.selectDetailMsgSentCntMix(mjonMsgSentVO); System.out.println("start"); @@ -302,8 +295,6 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll List A_lmsMsgCnt = new ArrayList(); List A_mmsMsgCnt = new ArrayList(); - 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 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 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 resultMsgSucFailList = new ArrayList(); - - 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 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 resultMsgSucFailList = new ArrayList(); + + 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; } diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml index a9209770..9dbd1628 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml @@ -3,8 +3,9 @@ ========= ======= ================================================= 2021.06.21 우영두 --> - + + @@ -222,6 +223,220 @@ + + + + + + + + + + + + + + -

+

- 발송일시 + 발송일시
- 형태 + 형태
- 발송방식 + + 내용 + + + 발송건수
- - 결과 - - 건수 - - 금액 + 결과 + 금액 + 예약관리 + + + + 대기 + 성공 + 실패 + 예약 - - - - - - - - - - - - - - + - - - - - - - - - - + + + - + @@ -205,7 +180,7 @@ $(document).ready(function(){ - +

@@ -220,239 +195,40 @@ $(document).ready(function(){

- -

- - - WEB - - - API - - - - - - -

+ + +<%-- --%> + + ... + - - - + +

- - - - - -

- - - - - - - - 명 -

-
- -

-
- -

-
-
-
- - - -

-
- -

-
-
-
-
+ +

- -

+ +

- - -

+ +

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

정상수신

+ +

0

- - - -

-
- -

-
-
- - - -

- - - - - - 0 - - -

+ + 원 + - + - - - -

정상수신

- - - -

- - - - - - 0 - - -

- -
- - -

수신오류

- - - -

- - - - - - 0 - - -

- -
- - -

결과대기

- - - -

- - - - - - 0 - - -

- -
-
- - - -

실패/대기

- - - - -

- / -

-
- -

- / -

-
-
- - -

- - - - - - 0 - - -

-
- - 발송 내역이 없습니다. - - - 발송 내역이 없습니다. - + 발송 내역이 없습니다.
diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax_advc_backup_20250115.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax_advc_backup_20250115.jsp new file mode 100644 index 00000000..59faa545 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax_advc_backup_20250115.jsp @@ -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" %> + + + +
+ +

+
+ + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + 발송일시 +
+ +
+
형태 +
+ +
+
발송방식 +
+ +
+
내용받는사람 +
+ +
+
발신번호 +
+ +
+
+ 발송건수 +
+ +
+
결과건수금액
+ + + + + + + + + + + + + + + + + + + + + + + + <%-- + 20240906 추가 + 발송 대기 상태일 때만 원래 발송시간을 보여주고, 발송이 완료되면 발송 처리 완료 시간(reqDate)을 보여준다. + 30분 딜레이 된 건으로 관리자 승인/취소 처리가 완료 되지 않은 건에 대해서 -30분 처리하여 원래 사용자가 보내려던 시간을 표시해줌 + --%> +

+
+ +

+
+
+ +
+ +

+
+
+
+

+ + + 장문 + + + 그림 + + + 단문 + + +

+
+

+ + + WEB + + + API + + + - + + +

+
+ + + + + + + +

+ + + + + + + + 명 +

+
+ +

+
+ +

+
+
+
+ + + +

+
+ +

+
+
+
+
+
+

+
+

+
+

정상수신

+
+ + +

+
+ +

+
+
+
+

+ + + + + + 0 + + +

+
+

정상수신

+
+

+ + + + + + 0 + + +

+
+

수신오류

+
+

+ + + + + + 0 + + +

+
+

결과대기

+
+

+ + + + + + 0 + + +

+
+

실패/대기

+
+ + +

+ / +

+
+ +

+ / +

+
+
+
+

+ + + + + + 0 + + +

+
발송 내역이 없습니다.발송 내역이 없습니다.
+
+
+
+ + + + + +
+
+ + +
+
+ +
    + +
+
diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp index 2769b35e..6021b6f0 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp @@ -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 = '' + /* var v_html_pre = '
' + '' + '' + '' @@ -766,8 +766,8 @@ function subContent(p_content_no){ + '' + '' + '' - + '
구분, 충전금액, 사용금액, 잔액 등 정보를 제공하는 표
LOADING...
'; - + + ''; + */ var v_html_pre = '' + '
' + '
' From 9e56bc1ee00be98322b74769ad71cfff7f66ec37 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Fri, 17 Jan 2025 18:25:28 +0900 Subject: [PATCH 03/25] =?UTF-8?q?=EB=B0=9C=EC=86=A1=EA=B2=B0=EA=B3=BC=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B0=9C=EC=84=A0=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/itn/com/cmm/util/FileUtil.java | 79 ++- .../msgsent/service/MjonMsgDetailSentVO.java | 39 ++ .../msgsent/service/MjonMsgSentService.java | 4 + .../msgsent/service/impl/MjonMsgSentDAO.java | 11 + .../service/impl/MjonMsgSentServiceImpl.java | 73 ++- .../msgsent/web/MjonMsgSentController.java | 36 ++ .../sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml | 59 +++ .../jsp/web/msgsent/MsgSentAllListAjax.jsp | 44 +- .../jsp/web/msgsent/MsgSentDetailView.jsp | 463 ++++++++++++++++++ 9 files changed, 752 insertions(+), 56 deletions(-) create mode 100644 src/main/java/itn/let/mjo/msgsent/service/MjonMsgDetailSentVO.java create mode 100644 src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp diff --git a/src/main/java/itn/com/cmm/util/FileUtil.java b/src/main/java/itn/com/cmm/util/FileUtil.java index 34a52cc1..319c8698 100644 --- a/src/main/java/itn/com/cmm/util/FileUtil.java +++ b/src/main/java/itn/com/cmm/util/FileUtil.java @@ -25,45 +25,44 @@ import org.apache.commons.lang3.StringUtils; */ public final class FileUtil { - /** - * @methodName : downLoad - * @author : 이호영 - * @date : 2023.04.06 - * @description : 파일 다운로드 - * @param response - * @param fileInfo - * @param fileName - * @throws Exception - */ - public static void downLoad(HttpServletResponse response, String fileInfo, String fileNameP) throws Exception { - - - try { - String path = fileInfo; // 경로에 접근할 때 역슬래시('\') 사용 - - File file = new File(path); - - String fileName = ""; - if(StringUtils.isNotEmpty(fileNameP)) - fileName = URLEncoder.encode(fileNameP,"UTF-8").replaceAll("\\+", "%20"); - else - fileName = file.getName(); - - response.setHeader("Content-Disposition", "attachment;filename=" + fileName); // 다운로드 되거나 로컬에 저장되는 용도로 쓰이는지를 알려주는 헤더 - - FileInputStream fileInputStream = new FileInputStream(path); // 파일 읽어오기 - OutputStream out = response.getOutputStream(); - - int read = 0; - byte[] buffer = new byte[1024]; - while ((read = fileInputStream.read(buffer)) != -1) { // 1024바이트씩 계속 읽으면서 outputStream에 저장, -1이 나오면 더이상 읽을 파일이 없음 - out.write(buffer, 0, read); - } - - } catch (Exception e) { - throw new Exception("download error"); - } + /** + * @methodName : downLoad + * @author : 이호영 + * @date : 2023.04.06 + * @description : 파일 다운로드 + * @param response + * @param fileInfo + * @param fileName + * @throws Exception + */ + public static void downLoad(HttpServletResponse response, String fileInfo, String fileNameP) throws Exception { + + + try { + String path = fileInfo; // 경로에 접근할 때 역슬래시('\') 사용 + + File file = new File(path); + + String fileName = ""; + if(StringUtils.isNotEmpty(fileNameP)) + fileName = URLEncoder.encode(fileNameP,"UTF-8").replaceAll("\\+", "%20"); + else + fileName = file.getName(); + + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); // 다운로드 되거나 로컬에 저장되는 용도로 쓰이는지를 알려주는 헤더 + + FileInputStream fileInputStream = new FileInputStream(path); // 파일 읽어오기 + OutputStream out = response.getOutputStream(); + + int read = 0; + byte[] buffer = new byte[1024]; + while ((read = fileInputStream.read(buffer)) != -1) { // 1024바이트씩 계속 읽으면서 outputStream에 저장, -1이 나오면 더이상 읽을 파일이 없음 + out.write(buffer, 0, read); + } + } catch (Exception e) { + throw new Exception("download error"); + } } - - + + } diff --git a/src/main/java/itn/let/mjo/msgsent/service/MjonMsgDetailSentVO.java b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgDetailSentVO.java new file mode 100644 index 00000000..d7c3c032 --- /dev/null +++ b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgDetailSentVO.java @@ -0,0 +1,39 @@ +package itn.let.mjo.msgsent.service; + +import java.io.Serializable; +import java.util.List; + +import itn.let.cmm.vo.FileInfoVO; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class MjonMsgDetailSentVO implements Serializable{ + + private static final long serialVersionUID = 1L; + + + private String msgGroupId; + private String reqDate; + private String msgGroupCnt; + private String reserveYn; + private String callFrom; + private String userId; + private String smsTxt; + private String subject; + private String msgType; + private String fileCnt; + private String msgKind; + private String sentDate; + private String filePath1; + private String filePath2; + private String filePath3; + + private String callTo; + private String statusTxt; + + + // FileInfo 리스트 필드 추가 + private List fileInfos; +} diff --git a/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentService.java b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentService.java index 09eff10f..76300d39 100644 --- a/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentService.java +++ b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentService.java @@ -60,5 +60,9 @@ public interface MjonMsgSentService { public int countAllMsgSentList(MjonMsgSentVO mjonMsgSentVO); + public Map selectAllMsgSentDetailView(MjonMsgDetailSentVO mjonMsgDetailSentVO) throws Exception; + + public List findByMsgDetailListAjax(MjonMsgDetailSentVO mjonMsgDetailSentVO); + } diff --git a/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentDAO.java b/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentDAO.java index e749d110..724d74d0 100644 --- a/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentDAO.java +++ b/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentDAO.java @@ -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.MjonMsgDetailSentVO; import itn.let.mjo.msgsent.service.MjonMsgSWFDTO; import itn.let.mjo.msgsent.service.MjonMsgSentVO; @@ -175,5 +176,15 @@ public class MjonMsgSentDAO extends EgovAbstractDAO { return (MjonMsgSWFDTO) select("MjonMsgSentDAO.findBySWF", msgGroupId); } + + public MjonMsgDetailSentVO selectAllMsgSentDetailView(MjonMsgDetailSentVO mjonMsgDetailSentVO) { + // TODO Auto-generated method stub + return (MjonMsgDetailSentVO) select("MjonMsgSentDAO.selectAllMsgSentDetailView", mjonMsgDetailSentVO); + } + + public List findByMsgDetailListAjax(MjonMsgDetailSentVO mjonMsgDetailSentVO) { + + return (List) list("MjonMsgSentDAO.findByMsgDetailListAjax", mjonMsgDetailSentVO); + } } diff --git a/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java b/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java index a8945faa..79931fe4 100644 --- a/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java +++ b/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java @@ -6,17 +6,21 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.annotation.Resource; +import org.apache.commons.io.FilenameUtils; import org.springframework.stereotype.Service; import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import itn.let.cmm.vo.FileInfoVO; 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.MjonMsgDetailSentVO; import itn.let.mjo.msgsent.service.MjonMsgSWFDTO; import itn.let.mjo.msgsent.service.MjonMsgSentService; import itn.let.mjo.msgsent.service.MjonMsgSentVO; @@ -133,7 +137,66 @@ public class MjonMsgSentServiceImpl extends EgovAbstractServiceImpl implements return resultMap; } + + public Map selectAllMsgSentDetailView(MjonMsgDetailSentVO mjonMsgDetailSentVO) throws Exception{ + + Map resultMap = new HashMap(); + + // 목록 + MjonMsgDetailSentVO result = mjonMsgSentDAO.selectAllMsgSentDetailView(mjonMsgDetailSentVO); + + // 광고일떄 (광고)와 줄바꿈+무료거부 0808800858 삭제 + if("A".equals(result.getMsgKind())) { + result.setSmsTxt(result.getSmsTxt().replace("(광고)", "") + .replaceAll("\\s*무료거부 0808800858", "")); + } + + if(Integer.parseInt(result.getFileCnt()) > 0) + { + + List fileInfos = getFileInfo(result); + result.setFileInfos(fileInfos); + } + + + + + resultMap.put("result", result); + + return resultMap; + } + + + private List getFileInfo(MjonMsgDetailSentVO result) throws Exception { + + + List fileInfos = new ArrayList<>(); + + // 파일 경로 필드들을 배열로 관리 + String[] filePaths = { result.getFilePath1(), result.getFilePath2(), result.getFilePath3() }; + + for (String filePath : filePaths) { + if (filePath != null) { + // 파일 ID 추출 + + // 확장자 제외한 파일명 + String fileId = FilenameUtils.getBaseName(filePath); + + // 파일 정보 조회 + MjonMsgSentVO info = mjonMsgSentDAO.selectFileInfo(fileId); + + // FileInfo 객체 생성 및 추가 + FileInfoVO fileInfo = new FileInfoVO(); + fileInfo.setAtchFileId(info.getAtchFileId()); + fileInfo.setFileSn(info.getFileSn()); + + fileInfos.add(fileInfo); + } + } + return fileInfos; + + } @Override public int countAllMsgSentList(MjonMsgSentVO mjonMsgSentVO) { @@ -299,4 +362,12 @@ public class MjonMsgSentServiceImpl extends EgovAbstractServiceImpl implements public MjonMsgSentVO selectFileInfo(String streFileId) throws Exception { return mjonMsgSentDAO.selectFileInfo(streFileId); } + + @Override + public List findByMsgDetailListAjax(MjonMsgDetailSentVO mjonMsgDetailSentVO) { + + List list = mjonMsgSentDAO.findByMsgDetailListAjax(mjonMsgDetailSentVO); + + return list; + } } diff --git a/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java b/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java index b4fed593..a97916c7 100644 --- a/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java +++ b/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java @@ -25,6 +25,8 @@ import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; @@ -41,12 +43,14 @@ import itn.com.cmm.service.EgovFileMngUtil; import itn.com.cmm.util.DateUtils; import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.kakao.user.sent.service.KakaoSentService; +import itn.let.mail.service.StatusResponse; import itn.let.mjo.addr.service.AddrGroupService; import itn.let.mjo.addr.service.AddrGroupVO; import itn.let.mjo.addr.service.AddrService; import itn.let.mjo.addr.service.AddrVO; import itn.let.mjo.apikey.service.ApiKeyMngService; import itn.let.mjo.apikey.service.ApiKeyVO; +import itn.let.mjo.msgsent.service.MjonMsgDetailSentVO; import itn.let.mjo.msgsent.service.MjonMsgSentCntVO; import itn.let.mjo.msgsent.service.MjonMsgSentService; import itn.let.mjo.msgsent.service.MjonMsgSentVO; @@ -254,6 +258,35 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll return "web/msgsent/MsgSentView"; } + + + /** + * 발송관리 화면 + * @param searchVO + * @param model + * @return "/web/mjon/msgtxt/selectMsgTxtView.do" + * @throws Exception + */ + @RequestMapping(value= {"/web/mjon/msgsent/msgSentDetailView.do"}) + public String selectMsgSentDetailView(@ModelAttribute("searchVO") MjonMsgDetailSentVO mjonMsgDetailSentVO, + RedirectAttributes redirectAttributes, ModelMap model) throws Exception{ + + Map resultMap = mjonMsgSentService.selectAllMsgSentDetailView(mjonMsgDetailSentVO); + model.addAttribute("result", resultMap.get("result")); + + return "web/msgsent/MsgSentDetailView"; + } + + // 팩스 금일 발송통계 갱신 + @RequestMapping(value= {"/web/mjon/msgsent/findByMsgDetailListAjax.do"}) + public ResponseEntity findByMsgDetailListAjax(MjonMsgDetailSentVO mjonMsgDetailSentVO) throws Exception { + + + List resultList = mjonMsgSentService.findByMsgDetailListAjax(mjonMsgDetailSentVO); + + + return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "", resultList)); + } /** * 마이페이지 - 이용내역 - ajax @@ -712,6 +745,9 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll return "web/msgsent/MsgSentDetailPopAjax"; } + + + /** * 발송관리 문자 상세보기 내용 * @param searchVO diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml index 9dbd1628..bb957cda 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml @@ -6,6 +6,7 @@ + @@ -283,6 +284,7 @@ + /* MjonMsgSentDAO.selectAllMsgSentDetailView */ + select + MGD.MSG_GROUP_ID as msgGroupId + , MGD.MSG_GROUP_CNT as msgGroupCnt + , MGD.RESERVE_YN as reserveYn + , MGD.CALL_FROM as callFrom + , MGD.USER_ID as userId + , MGD.SMS_TXT as smsTxt + , MGD.SUBJECT as subject + , MGD.REQ_DATE as reqdate + , MGD.MSG_TYPE as msgType + , MGD.MSG_KIND as msgKind + , MD.SENT_DATE as sentDate + , MD.FILE_CNT as fileCnt + , MD.FILE_PATH1 as filePath1 + , MD.FILE_PATH2 as filePath2 + , MD.FILE_PATH3 as filePath3 + from + MJ_MSG_GROUP_DATA MGD + inner join MJ_MSG_DATA MD on + MGD.MSG_GROUP_ID = MD.MSG_GROUP_ID + and MGD.USER_ID = MD.USER_ID + where + MGD.MSG_GROUP_ID = #msgGroupId# + limit 1 + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp index c251a4d9..201b5126 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp @@ -60,6 +60,19 @@ $(document).ready(function(){ }); + +function fn_sentDetailView(msgGroupId) { + // msgGroupId 값을 form에 설정 + $("#detailForm #msgGroupId").val(msgGroupId); + + // form을 해당 URL로 제출 + $("#detailForm").attr("action", "/web/mjon/msgsent/msgSentDetailView.do"); + $("#detailForm").submit(); +} + + + +

@@ -86,7 +99,6 @@ $(document).ready(function(){ - @@ -127,16 +139,15 @@ $(document).ready(function(){
- 결과 - 금액 - 예약관리 + 결과 + 금액(원) + 진행상황 대기 성공 실패 - 예약 @@ -196,10 +207,10 @@ $(document).ready(function(){

- -<%-- --%> - - ... +<%-- --%> + + + @@ -209,18 +220,17 @@ $(document).ready(function(){

-

+

-

- - -

0

+

원 - - + +

+ @@ -253,3 +263,7 @@ $(document).ready(function(){ + +
+ +
diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp new file mode 100644 index 00000000..18528c77 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp @@ -0,0 +1,463 @@ +<%@ 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" %> + + + + +
+ + +
+ +
+
+

발송결과 상세

+ +
+ + +
+ +
+ +
+
+
+

발송정보

+

+
+
+
+
발송일시
+
2024-07-18 15:25
+
+
+
형태
+
그림
+
+
+
발송건수
+
100
+
+
+
발신번호
+
010-1234-5678
+
+
+
예약관리
+ +
+ +
+
+
+
+
발송요금
+
100
+ +
+
+
+
+ + +
+
+
+

상세결과

+

+
+
+
+
+
전체건수
+
101건(100%)
+
+
+
+
+
성공건수
+
100건(100%)
+
+
+
+
+
+
+
대기건수
+
0건(0%)
+
+
+
+
+
실패건수
+
1건(100%)
+
+
+
+
+
+ + +
+
+ + +
+
+

* 전체 건수를 클릭하면 받는 사람 상세정보를 확인하실 수 있습니다.

+
+
+
+ + + +
+
+
+
+

미리보기

+ + +
+ + ${result.msgType == '4' + ? 'SMS' + : (result.fileCnt == '0' + ? 'LMS' + : 'MMS')} + + + + + +
+ +
+
+ +
+ &fileSn=" alt="발송된 그림문자 미리보기" style="width: 100%"> +
+
+
+
+ +

(광고)

+
+

+

+ +

무료 거부 080-0000-0000

+
+
+
+ +
+
+

※ 단말기 설정에 따라 다르게 보일 수 있습니다

+

+
+ +
+ + +
+ +
+ + +
+
+ +
+ + + + +
+ +
+ + From 01898701bf20ecc2ebd7cc8dad326f0966937ae3 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Fri, 17 Jan 2025 18:25:35 +0900 Subject: [PATCH 04/25] =?UTF-8?q?=EB=AC=B8=EC=9E=90=EC=A0=84=EC=86=A1=20?= =?UTF-8?q?=EC=A7=84=ED=96=89=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/itn/let/cmm/vo/FileInfoVO.java | 32 +++++++++++++++++++ .../jsp/web/msgsent/MsgSentDetailView.jsp | 30 ++--------------- 2 files changed, 34 insertions(+), 28 deletions(-) create mode 100644 src/main/java/itn/let/cmm/vo/FileInfoVO.java diff --git a/src/main/java/itn/let/cmm/vo/FileInfoVO.java b/src/main/java/itn/let/cmm/vo/FileInfoVO.java new file mode 100644 index 00000000..8c1b48c3 --- /dev/null +++ b/src/main/java/itn/let/cmm/vo/FileInfoVO.java @@ -0,0 +1,32 @@ +package itn.let.cmm.vo; + +import java.io.Serializable; + +import lombok.Getter; +import lombok.Setter; + +/** + * + * @author : 이호영 + * @fileName : FileInfoVO.java + * @date : 2025.01.17 + * @description : 파일 풀 경로에서 파일명만 가져와 ID 가져올때 사용하는 VO + * MjonMsgDetailSentVO 참고 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- * + * 2025.01.17 이호영 최초 생성 + * + * + * + */ +@Getter +@Setter +public class FileInfoVO implements Serializable { + + private static final long serialVersionUID = 1L; + + private String atchFileId; // 첨부파일 ID + private String fileSn; // 파일 순번 + +} diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp index 18528c77..81beb5a7 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp @@ -6,30 +6,6 @@ <%@ page import="itn.com.cmm.LoginVO" %> - @@ -118,22 +189,7 @@ function fn_sentDetailView(msgGroupId) {
- 내용 - - 발송건수
@@ -154,51 +210,51 @@ function fn_sentDetailView(msgGroupId) { - + - - + + - + - + - + <%-- 20240906 추가 발송 대기 상태일 때만 원래 발송시간을 보여주고, 발송이 완료되면 발송 처리 완료 시간(reqDate)을 보여준다. 30분 딜레이 된 건으로 관리자 승인/취소 처리가 완료 되지 않은 건에 대해서 -30분 처리하여 원래 사용자가 보내려던 시간을 표시해줌 --%> -

+

-

+

-

+

- + 장문 - + 그림 @@ -208,34 +264,45 @@ function fn_sentDetailView(msgGroupId) {

-<%-- --%> -<%-- --%> - -

+

-

+

-

+

-

+

- 원 + -

+ + + + + +

+
+
+ + @@ -244,7 +311,7 @@ function fn_sentDetailView(msgGroupId) {
- 발송 내역이 없습니다. + 발송 내역이 없습니다.
@@ -254,14 +321,14 @@ function fn_sentDetailView(msgGroupId) {
- - - - + + +<%-- --%> +<%-- --%>
- - + +<%-- --%>
@@ -273,3 +340,10 @@ function fn_sentDetailView(msgGroupId) {
+ + +
+ + + +
diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp index 81beb5a7..5095a7c0 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp @@ -16,7 +16,7 @@ $(document).ready(function(){ $tbDtailList = new Tabulator("#detailPopup", { height: "255px", width: "20%", - layout: "fitColumns", + layout: "fitDataStretch", // 데이터가 너비에 맞게 늘어나도록 설정 autoColumns: false, headerHozAlign: "center", validationMode: "highlight", @@ -24,6 +24,13 @@ $(document).ready(function(){ clipboardCopySelector: "table", clipboardPasteAction: "insert", // insert, update, replace columns: [ + { + title: "이름", + field: "addrNm", + hozAlign: "center", + headerHozAlign: "center", + width: 140 + }, { title: "휴대폰", field: "phone", @@ -43,12 +50,17 @@ $(document).ready(function(){ fn_getDetailList(); - /* - + $('#goPageBtn').click(function(){ + $("#goList").submit(); + }); + + + + + - */ }); @@ -90,6 +102,7 @@ function fn_setData(data){ data.forEach((row, index) => { resultData.push({ + // addrNm: row.addrNm, // 폰번호 phone: row.callTo, // 폰번호 result: row.statusTxt // 결과 메시지 추가 }); @@ -106,6 +119,17 @@ function fn_setData(data){
+
+ " /> + + + + + + + + +
@@ -290,7 +314,7 @@ function fn_setData(data){
- +
diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp index b788b73c..5be933e1 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp @@ -15,7 +15,12 @@ var thisfuledtlday = ""; //당원 마지막일 $(document).ready(function(){ //초기 전체 리스트 페이지 보여주기 - linkPage(1); + linkPage($('#searchForm #pageIndex').val()); + + + fn_activateTab($('#searchForm #searchCondition01').val()) + fn_setActiveTab($('#searchForm #searchCondition02').val()) + var date = new Date() ; //이전달 첫날/마지막날 조회 @@ -28,12 +33,14 @@ $(document).ready(function(){ lastfuledday = lastfulstday + "/"+ new Date(date.getFullYear(), date.getMonth(), 0).getDate()+"" ; lastfulstday += "/01" ; } + console.log('lastfulstday: ', lastfulstday); //당월 첫날/마지막날 조회 thisfulstlday = date.getFullYear() + "/" ; thisfulstlday += date.getMonth()+1 < 10 ? "0"+ (date.getMonth()+1) : date.getMonth()+1+"" ; thisfuledtlday = thisfulstlday + "/"+ new Date(date.getFullYear(), date.getMonth()+1, 0).getDate()+""; thisfulstlday += "/01" ; + console.log('thisfulstlday: ', thisfulstlday); //3개월 이전 날짜 구해오기 @@ -55,6 +62,19 @@ $(document).ready(function(){ $(document).on('click', '.sort', function (){ listSortOrd(this); }); + + + // 탭 :: 전체 , 즉시, 예약 + $(document).on('click', '.sendKindBtn', function (){ + + // 클릭된 버튼의 data-info 값을 전달하여 함수 호출 + fn_activateTab($(this).data('info')); + + linkPage(1); + }); + + + //목록 정렬 항목 클릭 function listSortOrd(obj){ @@ -98,7 +118,18 @@ $(document).ready(function(){ }); - +//탭 활성화 처리 함수 +function fn_activateTab(tabInfo) { + // 1. data-info 값을 가진 버튼 요소 찾기 + var $button = $('.sendKindBtn[data-info="' + tabInfo + '"]'); + + // 2. 해당 버튼이 속한 탭 활성화 처리 + $button.closest('ul').find('.tab').removeClass('active'); + $button.closest('.tab').addClass('active'); + + // 3. hidden input 요소에 값 설정 + $('#searchCondition01').val(tabInfo); +} //캘린더에 날짜 입력해 주기 @@ -107,13 +138,13 @@ function setCalVal(val,targetObj){ } -//검색 버튼 실행 +//페이지 이동 실행 function linkPage(pageNo){ var form = document.searchForm; - var stateType = form.stateType.value; form.pageIndex.value = pageNo; - + console.log('form : ', form); + var sendData = $(document.searchForm).serializeArray(); $(".msgSentAllLoad").html('
LOADING...
'); $(".msgSentAllLoad").load("/web/mjon/msgsent/selectMsgSentListViewAjax.do", sendData ,function(response, status, xhr){ @@ -137,120 +168,73 @@ function fnDelete(){ } }); - if(msgId.length > 0){ + console.log('msgId : ', msgId); + + if(msgId.length < 1){ + alert("삭제할 문자를 선택해 주세요."); + return false; + } //22.04.25 구글 독스 alert 기준으로 이지우가 수정 /* if(confirm("선택한 발송문자를 삭제하시겠습니까? 삭제된 문자는 복구가 불가능 합니다.")) */ - if(confirm("선택한 목록을 삭제하시겠습니까?")){ + if(confirm("선택한 목록을 삭제하시겠습니까?\n삭제한 목록은 복구가 불가합니다.")){ document.searchForm.msgGroupIdList.value = msgId; var sendData = $(document.searchForm).serializeArray(); $(".msgSentAllLoad").load("/web/mjon/msgsent/deleteMsgSentDataAjax.do", sendData ,function(response, status, xhr){ }); - -// var form = document.searchForm; -// form.action="/web/mjon/msgsent/selectMsgSentView.do"; -// form.submit(); + + alert("삭제되었습니다."); + var form = document.searchForm; + form.action="/web/mjon/msgsent/selectMsgSentView.do"; + form.submit(); } - - }else{ - - alert("삭제할 문자를 선택해 주세요."); - return false; - - } - -} - -//상세보기 버튼 실행 -function fnRevDetailPop(msgGroupId, msgId, fileCnt){ - document.resPopForm.msgGroupId.value = msgGroupId; - document.resPopForm.msgId.value = msgId; - var sendData = $(document.resPopForm).serializeArray(); - - var form = document.searchForm; - if (form.listType.value == "privateList") { - $("#msgSentDetailPopLoad").load("/web/mjon/msgsent/selectMsgSentDetailData2Ajax.do", sendData ,function(response, status, xhr){ - }); - } - else { - $("#msgSentDetailPopLoad").load("/web/mjon/msgsent/selectMsgSentDetailDataAjax.do", sendData ,function(response, status, xhr){ - }); - } - -} - -function fnListLoad(pageType, tabNum){ - - var form = document.searchForm; - var $tab = $(".table_tab_wrap li").eq(tabNum); // - $tab.addClass("active"); - $tab.find("button").attr("title", "선택됨"); - $tab.siblings("li.tab").removeClass("active"); - $tab.siblings("li.btn_tab").removeClass("active"); - $tab.siblings("li.tab").find("button").removeAttr("title"); - - if(pageType == 'all'){ - - form.stateType.value = "all"; - $(".tab_depth1").show(); - - }else if(pageType == 'ready'){ - - form.stateType.value = "ready"; - $(".tab_depth1").show(); - - }else if(pageType == 'complete'){ - - form.stateType.value = "complete"; - $(".tab_depth1").show(); - - }else if(pageType == 'fail'){ - form.listType.value = "privateList"; - form.stateType.value = "fail"; - $(".tab_depth1").hide(); - - } - - /* if(pageType == 'fail'){//발송실패의 경우 모두 개인별 건수를 보여준다. - - form.listType.value = 'privateList'; - - } */ - - linkPage(1); } // 전체/단문/장문/그림 탭 선택 처리 -function fnTabLoad(tabType, tabNum){ +function fnTabLoad(tabType){ + + //즉시, 예약 탭은 전체로 바꿔야함 + fn_activateTab(''); + var form = document.searchForm; - - form.tabType.value = tabType; - - //해당 탭의 전체 리스트 내역으로 불러오기 - fnListLoad('all', '0'); - var n=tabNum+1; - - //탭 선택 CSS 처리 - var $tab = $(".list_tab_wrap2 li:nth-child("+n+")"); - var $tabPrev = $(".list_tab_wrap2 li:nth-child("+n+")").prev("li") - $tab.addClass("active"); - $tab.find("button").attr("title", "선택됨"); - $tab.siblings("li.tab").removeClass("active"); - $tab.siblings("li.tab").find("button").removeAttr("title"); - $tab.siblings("li:not(li:last-child)").find("button").css("border-right","1px solid #e5e5e5"); - $tabPrev.find("button").css("border-right","0"); + // 탭 선택 CSS 처리 + fn_setActiveTab(tabType); + linkPage(1); } +//fnTabLoad 함수에 대한 탭 선택 CSS 처리 함수 +function fn_setActiveTab(tabType) { + var $tabs = $(".list_tab_wrap2 li"); // 전체 탭 리스트 + $tabs.removeClass("active").find("button").removeAttr("title"); // 모든 탭 초기화 + + // tabType에 해당하는 탭 찾기 + $tabs.each(function() { + var buttonText = $(this).find("button").text(); + if ((tabType === '' && buttonText === "전체") || + (tabType === 'S' && buttonText === "단문(SMS)") || + (tabType === 'L' && buttonText === "장문(LMS)") || + (tabType === 'M' && buttonText === "그림(MMS)")) { + $(this).addClass("active").find("button").attr("title", "선택됨"); + } + }); + + $('#searchCondition02').val(tabType); +} + + function fnSearch(pageNo){ - /* if(!fn_G_cmndataValueChk("startDate", "endDate", 3)){ + /* if(!fn_G_cmndataValueChk("searchStartDate", "searchEndDate", 3)){ return; }; */ + + fn_activateTab('') + fn_setActiveTab('') console.log('fnSearch') var form = document.searchForm; @@ -274,27 +258,8 @@ function prevMonth(month) { function fnExcelDownLoad(pageType, tabType){ var form = document.searchForm; - var loginVO = '${LoginVO}'; - - form.stateType.value = pageType; - form.tabType.value = tabType; - - if(loginVO == "" || loginVO == null){ - alert("로그인 후 이용이 가능합니다."); - return false; - } // 기간검색 유효성 검사 - if ($("#startDate").val() == "" || $("#endDate").val() == "") { - alert("기간 설정을 먼저해주세요. 최근 3개월까지만 다운로드 가능합니다.") - return false; - } - else { - if ($("#startDate").val() < prevMonth(3)) { - alert("최근 3개월까지만 다운로드 가능합니다.") - return false; - } - } if(confirm("엑셀 다운로드를 하시겠습니까?")){ @@ -305,21 +270,6 @@ function fnExcelDownLoad(pageType, tabType){ } -$(document).on('click', '.msgGgoupList', function(){ - - var form = document.searchForm; - form.listType.value = "groupList"; - linkPage(1); - -}); - -$(document).on('click', '.msgPrivateList', function(){ - - var form = document.searchForm; - form.listType.value = "privateList"; - linkPage(1); - -}); function fnDeleteAddrNo(listType){ @@ -537,7 +487,7 @@ function fnMsgSFDetailList(msgGroupId, resultType){ } -/* 사용내역서 클릭 시 내역서 새창 팝업 오픈 */ +/* 사용내역서 클릭 시 내역서 새창 팝업 오픈 function fnShowPrintPopup(tabType, type) { //만들려는 팝업의 크기 var popup_wid = '840'; @@ -553,7 +503,7 @@ function fnShowPrintPopup(tabType, type) { $("#searchForm").attr({"action":"/web/mjon/msgsent/printMsgSentDataAjax.do", "method":"post"}).submit(); } - +*/ function addrGroupDuplCnt() { document.searchForm.addrGrpNm.value = $('#grpNm').val(); @@ -744,9 +694,10 @@ function fnMjMsgReSendAll(msgGroupId, replaceCnt, electionCnt, advertisementCnt) } //발송결과 - 대기/성공/실패 -function subContent(p_content_no){ +function subContent(){ - var sendData = $(document.listForm).serializeArray(); + var sendData = $(document.searchForm).serializeArray(); + console.log('sendData :: ', sendData); var v_html_pre = '' + '' + '' @@ -891,15 +842,19 @@ function subContent(p_content_no){ --%> - + + " /> + " /> " /> - + + +
@@ -917,36 +872,20 @@ function subContent(p_content_no){
기간선택
- + ~ - +
- - - + + +
- <%-- - --%> - - - - - - +
diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp index 5095a7c0..071eaa74 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentDetailView.jsp @@ -241,7 +241,7 @@ function fn_setData(data){
-

미리보기

+

문자내용

구분, 충전금액, 사용금액, 잔액 등 정보를 제공하는 표
- - + + - + - +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
이름 -
- -
-
수신번호 -
- -
-
상세결과 -
- -
-
홍길동010-1234-5678성공
홍길동010-1234-5678성공
홍길동010-1234-5678성공
홍길동010-1234-5678성공
홍길동010-1234-5678성공
홍길동010-1234-5678성공
홍길동010-1234-5678성공
- --%> +
-
-
+
+ - +
-