이호영 이호영 2024-12-24
문자, 팩스발송 주소록 불러오기 완료
@71d444f4479089cc862b4b86683c9a8bcb7d129d
src/main/java/itn/let/fax/addr/web/FaxAddrController.java
--- src/main/java/itn/let/fax/addr/web/FaxAddrController.java
+++ src/main/java/itn/let/fax/addr/web/FaxAddrController.java
@@ -158,6 +158,7 @@
     	try {
 			
     		List<FaxAddrVO> resultAddrList = faxAddrService.selectFaxAddrListAjax(faxAddrVO);
+    		System.out.println("resultAddrList.size() :: "+ resultAddrList.size());
     		
     		modelAndView.addObject("resultAddrList", resultAddrList);
     		modelAndView.addObject("result", "success");
 
src/main/java/itn/let/mjo/addr/service/AddrDTO.java (added)
+++ src/main/java/itn/let/mjo/addr/service/AddrDTO.java
@@ -0,0 +1,35 @@
+package itn.let.mjo.addr.service;
+
+
+import itn.com.cmm.ComDefaultVO;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class AddrDTO extends ComDefaultVO{
+
+	private static final long serialVersionUID = 1L;
+	
+	
+	
+	private String addrId;						// 주소록ID
+	private String addrGrpId;					// 주소록그룹ID
+	private String mberId;						// 일반회원ID
+    private String name;
+    private String phone;
+    private String rep1;
+    private String rep2;
+    private String rep3;
+    private String rep4;
+	private String deleteYn;					// 삭제여부
+	private String bookmark;					// 자주보내는번호
+	private String addrGroupNm;
+	
+	
+    
+    
+    
+
+	
+}
src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java
--- src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java
+++ src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java
@@ -67,6 +67,7 @@
 import itn.let.lett.service.LetterService;
 import itn.let.lett.service.LetterVO;
 import itn.let.mail.service.StatusResponse;
+import itn.let.mjo.addr.service.AddrDTO;
 import itn.let.mjo.addr.service.AddrGroupService;
 import itn.let.mjo.addr.service.AddrGroupVO;
 import itn.let.mjo.addr.service.AddrService;
@@ -1884,7 +1885,7 @@
 	        int offset = (addrVO.getPage()) * addrVO.getSize();
 	        addrVO.setOffset(offset);
 	        // 데이터 조회
-	        List<AddrVO> resultAddrList = mjonMsgDataService.selectMsgAddrListAjax_advc(addrVO);
+	        List<AddrDTO> resultAddrList = mjonMsgDataService.selectMsgAddrListAjax_advc(addrVO);
 
 	        return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "",resultAddrList));
 	    } catch (Exception e) {
src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java
--- src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java
+++ src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java
@@ -6,6 +6,7 @@
 
 import itn.let.lett.service.LetterVO;
 import itn.let.mail.service.StatusResponse;
+import itn.let.mjo.addr.service.AddrDTO;
 import itn.let.mjo.addr.service.AddrVO;
 import itn.let.mjo.msg.service.MjonMsgVO;
 import itn.let.sym.site.service.JoinSettingVO;
@@ -177,7 +178,7 @@
 	//대용량 문자 전송시 사용자 마지막 PK 값 조회하기
 	public String selectMsgUserLastIdgen(MjonMsgVO mjonMsgVO) throws Exception;
 
-	public List<AddrVO> selectMsgAddrListAjax_advc(AddrVO addrVO) throws Exception;
+	public List<AddrDTO> selectMsgAddrListAjax_advc(AddrVO addrVO) throws Exception;
 
 	public int countByMsgAddrListAjax_advc(AddrVO addrVO) throws Exception;
 	
src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java
--- src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java
+++ src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java
@@ -16,6 +16,7 @@
 import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
 import itn.com.cmm.MjonMsgSendVO;
 import itn.let.lett.service.LetterVO;
+import itn.let.mjo.addr.service.AddrDTO;
 import itn.let.mjo.addr.service.AddrVO;
 import itn.let.mjo.msg.service.MjonMsgVO;
 import itn.let.mjo.msgdata.service.MjonMsgDataVO;
@@ -381,8 +382,8 @@
 	}
 
 
-	public List<AddrVO> selectMsgAddrListAjax_advc(AddrVO addrVO) {
-		return (List<AddrVO>) list("mjonMsgDAO.selectMsgAddrListAjax_advc", addrVO);
+	public List<AddrDTO> selectMsgAddrListAjax_advc(AddrVO addrVO) {
+		return (List<AddrDTO>) list("mjonMsgDAO.selectMsgAddrListAjax_advc", addrVO);
 	}
 
 
src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
--- src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
+++ src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
@@ -1,6 +1,5 @@
 package itn.let.mjo.msgdata.service.impl;
 
-import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.ParseException;
@@ -18,22 +17,18 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
-import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
-import org.springframework.web.servlet.ModelAndView;
 
 import egovframework.com.idgen.CustomIdGnrService;
 import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
-import egovframework.rte.fdl.cmmn.exception.FdlException;
 import egovframework.rte.fdl.idgnr.EgovIdGnrService;
 import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
 import egovframework.rte.psl.dataaccess.util.EgovMap;
 import itn.com.cmm.LoginVO;
 import itn.com.cmm.MjonMsgSendVO;
-import itn.com.cmm.OptimalMsgResultDTO;
 import itn.com.cmm.util.MJUtil;
 import itn.com.cmm.util.MsgSendUtils;
 import itn.com.cmm.util.StringUtil;
@@ -41,6 +36,7 @@
 import itn.let.lett.service.LetterVO;
 import itn.let.lett.service.impl.LetterDAO;
 import itn.let.mail.service.StatusResponse;
+import itn.let.mjo.addr.service.AddrDTO;
 import itn.let.mjo.addr.service.AddrVO;
 import itn.let.mjo.event.service.MjonEventService;
 import itn.let.mjo.event.service.MjonEventVO;
@@ -3929,7 +3925,7 @@
 	}
 
 	@Override
-	public List<AddrVO> selectMsgAddrListAjax_advc(AddrVO addrVO) throws Exception {
+	public List<AddrDTO> selectMsgAddrListAjax_advc(AddrVO addrVO) throws Exception {
 
 		return mjonMsgDataDAO.selectMsgAddrListAjax_advc(addrVO);
 	}
src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
--- src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
+++ src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
@@ -42,7 +42,6 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -51,7 +50,6 @@
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.support.SessionStatus;
@@ -60,8 +58,6 @@
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-
 import egovframework.rte.fdl.idgnr.EgovIdGnrService;
 import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
 import egovframework.rte.psl.dataaccess.util.EgovMap;
@@ -69,7 +65,6 @@
 import itn.com.cmm.EgovMessageSource;
 import itn.com.cmm.JsonResult;
 import itn.com.cmm.LoginVO;
-import itn.com.cmm.MjonMsgSendVO;
 import itn.com.cmm.service.EgovFileMngService;
 import itn.com.cmm.service.EgovFileMngUtil;
 import itn.com.cmm.service.FileVO;
@@ -81,6 +76,7 @@
 import itn.let.lett.service.LetterService;
 import itn.let.lett.service.LetterVO;
 import itn.let.mail.service.StatusResponse;
+import itn.let.mjo.addr.service.AddrDTO;
 import itn.let.mjo.addr.service.AddrGroupService;
 import itn.let.mjo.addr.service.AddrGroupVO;
 import itn.let.mjo.addr.service.AddrService;
@@ -2068,21 +2064,17 @@
 		        int offset = (addrVO.getPage()) * addrVO.getSize();
 		        addrVO.setOffset(offset);
 		        // 데이터 조회
-		        List<AddrVO> resultAddrList = mjonMsgDataService.selectMsgAddrListAjax_advc(addrVO);
+//		        List<AddrVO> resultAddrList = mjonMsgDataService.selectMsgAddrListAjax_advc(addrVO);
+		        List<AddrDTO> resultAddrList = mjonMsgDataService.selectMsgAddrListAjax_advc(addrVO);
+		        System.out.println(" + resultAddrList.size() :: "+ resultAddrList.size());
 //		        int totalCount = mjonMsgDataService.countByMsgAddrListAjax_advc(addrVO); // 필터에 맞는 총 레코드 수 가져오기
 
-		        // 페이지네이션 계산
-//		        int lastPage = (int) Math.ceil((double) totalCount / addrVO.getSize());
-
-		        // 응답 데이터 구성
-//		        response.put("data", resultAddrList);
-//		        response.put("last_page", lastPage); // 클라이언트가 사용할 수 있도록 last_page 포함
-//		        response.put("total_count", totalCount); // 필요 시, 총 레코드 수 포함
-
 		        return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "",resultAddrList));
+
 		    } catch (Exception e) {
-		        e.printStackTrace();
-				return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "조회 요청 중 오류가 발생하였습니다.", LocalDateTime.now()));
+				e.printStackTrace();
+				return ResponseEntity.ok().body(
+					new StatusResponse(HttpStatus.INTERNAL_SERVER_ERROR, "조회 중 오류 발생", LocalDateTime.now()));
 		    }
 		}
 		
src/main/resources/egovframework/sqlmap/let/fax/addr/Fax_Addr_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/fax/addr/Fax_Addr_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/fax/addr/Fax_Addr_SQL_Mysql.xml
@@ -1021,7 +1021,7 @@
 					ON A.ADDR_GRP_ID = B.ADDR_GRP_ID
 				WHERE A.MBER_ID = #mberId#
 				AND	(A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL)
-				AND B.DELETE_YN = 'N'
+				AND A.DELETE_YN = 'N'
 				GROUP BY A.ADDR_PHONE_NO
 				ORDER BY A.ADDR_PHONE_NO ASC, B.ADDR_GRP_ID ASC
 			) M
@@ -1144,7 +1144,6 @@
 			A.ADDR_GRP_ID = B.ADDR_GRP_ID
 		WHERE    A.MBER_ID = #mberId#
 		AND	(A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL)
-		AND      B.DELETE_YN = 'N'
 		<isNotEmpty property="type">
 			<isEqual property="type" compareValue="none">
 				AND		A.ADDR_GRP_ID = '0' 
@@ -1156,6 +1155,13 @@
 			<isEqual property="type" compareValue="grp">
 				AND		A.ADDR_GRP_ID = #searchAddrGrpId#
 			</isEqual>
+			<isEqual property="type" compareValue="all">
+			AND (
+				B.DELETE_YN = 'N' 
+				OR (A.ADDR_GRP_ID = '0' AND A.BOOKMARK = 'N') 
+				OR A.BOOKMARK = 'Y'
+			)
+			</isEqual>
 		</isNotEmpty>
 		<isNotEmpty property="searchCondition">
 			<isEqual property="searchCondition" compareValue="0">
src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
@@ -16,6 +16,7 @@
 	<typeAlias  alias="mberManageVO" type="itn.let.uss.umt.service.MberManageVO"/>
 	<typeAlias  alias="SendLogVO" type="itn.let.uat.uia.web.SendLogVO"/>
 	<typeAlias  alias="addrVO" type="itn.let.mjo.addr.service.AddrVO"/>
+	<typeAlias  alias="addrDTO" type="itn.let.mjo.addr.service.AddrDTO"/>
 	<typeAlias  alias="mjonMsgResultCodeVO" type="itn.let.mjo.msg.service.MjonMsgResultCodeVO"/>
 	<typeAlias  alias="mjonSwearWordVO" type="itn.let.mjo.msg.service.MjonSwearWordVO"/>
 	<typeAlias  alias="mjonMsgResvVO" type="itn.let.mjo.reservmsg.service.MjonResvMsgVO"/>
@@ -3882,7 +3883,7 @@
 	</select>
 	
 	<!-- 등록 주소록 그룹 선택시 리스트 불러오기 -->
-	<select id="mjonMsgDAO.selectMsgAddrListAjax_advc" parameterClass="addrVO" resultClass="addrVO">
+	<select id="mjonMsgDAO.selectMsgAddrListAjax_advc" parameterClass="addrVO" resultClass="addrDTO">
 		/* mjonMsgDAO.selectMsgAddrListAjax_advc */
 		
 		SELECT   A.ADDR_ID AS addrId,
@@ -3904,7 +3905,6 @@
 			A.ADDR_GRP_ID = B.ADDR_GRP_ID
 		WHERE    A.MBER_ID = #mberId#
 		AND	(A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL)
-		AND      B.DELETE_YN = 'N'
 		<isNotEmpty property="type">
 			<isEqual property="type" compareValue="none">
 				AND		A.ADDR_GRP_ID = '0' 
@@ -3915,6 +3915,13 @@
 			</isEqual>
 			<isEqual property="type" compareValue="grp">
 				AND		A.ADDR_GRP_ID = #searchAddrGrpId#
+			</isEqual>
+			<isEqual property="type" compareValue="all">
+			AND (
+				B.DELETE_YN = 'N' 
+				OR (A.ADDR_GRP_ID = '0' AND A.BOOKMARK = 'N') 
+				OR A.BOOKMARK = 'Y'
+			)
 			</isEqual>
 		</isNotEmpty>
 		<isNotEmpty property="searchCondition">
@@ -3952,7 +3959,7 @@
 			A.ADDR_GRP_ID = B.ADDR_GRP_ID
 		WHERE    A.MBER_ID = #mberId#
 		AND	(A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL)
-		AND      B.DELETE_YN = 'N'
+		
 		<isNotEmpty property="type">
 			<isEqual property="type" compareValue="none">
 				AND		A.ADDR_GRP_ID = '0' 
@@ -3964,6 +3971,13 @@
 			<isEqual property="type" compareValue="grp">
 				AND		A.ADDR_GRP_ID = #searchAddrGrpId#
 			</isEqual>
+			<isEqual property="type" compareValue="all">
+			AND (
+				B.DELETE_YN = 'N' 
+				OR (A.ADDR_GRP_ID = '0' AND A.BOOKMARK = 'N') 
+				OR A.BOOKMARK = 'Y'
+			)
+			</isEqual>
 		</isNotEmpty>
 		<isNotEmpty property="searchCondition">
 			<isEqual property="searchCondition" compareValue="0">
src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
@@ -2765,7 +2765,6 @@
 
 //주소록 불러오기 팝업의 그룹 선택시 우측에 주소록 불러오기
 function fnSelectAddrList(type,addrGrpId,item){
-	
 	// 주소록 그룹 열림, 닫힘 폴더이미지 초기화
 	$(".adr_pop_list div p").each(function (index, item) {
 		$(item).find("img").attr("src", "/publish/images/content/close_folder2.png");
@@ -2840,47 +2839,25 @@
 						return false;
 					}
 					
-					//받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다.
-// 					for(var i=0; i < addrList.length; i++){
-// 						tableData.push({
-// 								addrGroupNm: addrList[i].addrGrpNm
-// 								, addrPhone: removeDash(addrList[i].addrPhoneNo) 
-// 								, addrName: addrList[i].addrNm
-// 								, addrRep1: addrList[i].addrInfo1
-// 								, addrRep2: addrList[i].addrInfo2
-// 								, addrRep3: addrList[i].addrInfo3
-// 								, addrRep4: addrList[i].addrInfo4
-// 							});
-// 					}
-					
-// 					addrList.forEach(function(addr){
-// 						tableData.push({
-// 							addrGroupNm: addr.addrGrpNm,
-// 							addrPhone: removeDash(addr.addrPhoneNo),
-// 							addrName: addr.addrNm,
-// 							addrRep1: addr.addrInfo1,
-// 							addrRep2: addr.addrInfo2,
-// 							addrRep3: addr.addrInfo3,
-// 							addrRep4: addr.addrInfo4
-// 						});
-//                     });
-					
-					//우측 주소록 리스트 Tabulator에 입력해주기
-// 					tableAddr.setData(tableData);
-					console.log('data : ', data);
+// 					console.log('data : ', data);
 					tableAddr.setData(addrList);
-// 	                tableAddr.updateOrAddData(addrList); // 무한 스크롤을 위해 데이터를 업데이트
 			} 
 			else
 			{
 				alert("주소록 불러오기에 실패하였습니다. !!");
 			}
 		},
-        error: function (jqXHR, textStatus, errorThrown) { 
-            alert("주소록 불러오기에 실패하였습니다."); 
-            console.log("ERROR : ", jqXHR.status, textStatus, errorThrown); // 상태 코드, 상태 텍스트, 에러 메시지 출력
-            console.log("Response Text: ", jqXHR.responseText); // 서버 응답 텍스트 출력
-        },
+        error: function (jqXHR, textStatus, errorThrown) {
+    		alert("주소록 불러오기에 실패하였습니다.");
+    		console.error("Error:", jqXHR.status, textStatus, errorThrown);
+    		console.error("Response Text:", jqXHR.responseText);
+    		try {
+    			let json = JSON.parse(jqXHR.responseText);
+    			console.log("Parsed JSON Response:", json);
+    		} catch (e) {
+    			console.error("JSON Parse Error:", e);
+    		}
+    	},
 		beforeSend : function(xmlHttpRequest) {
         	//로딩창 show
         	$('.loading_layer').addClass('active');				
Add a comment
List