File name
Commit message
Commit date
2024-11-14
File name
Commit message
Commit date
2024-11-14
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
2024-11-14
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package itn.let.fax.addr.web;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import itn.com.cmm.EgovMessageSource;
import itn.com.cmm.JsonResult;
import itn.com.cmm.LoginVO;
import itn.com.cmm.util.MJUtil;
import itn.com.cmm.util.StringUtil;
import itn.com.utl.fcc.service.EgovStringUtil;
import itn.let.fax.addr.service.FaxAddrGroupService;
import itn.let.fax.addr.service.FaxAddrGroupVO;
import itn.let.fax.addr.service.FaxAddrService;
import itn.let.fax.addr.service.FaxAddrTransHistVO;
import itn.let.fax.addr.service.FaxAddrVO;
import itn.let.mjo.msgdata.service.PhoneVO;
@Controller
public class FaxAddrController {
@Resource (name = "FaxAddrService")
private FaxAddrService faxAddrService;
@Resource (name = "FaxAddrGroupService")
private FaxAddrGroupService faxAddrGroupService;
/** EgovMessageSource */
@Resource(name="egovMessageSource")
EgovMessageSource egovMessageSource;
/**
* 주소록 타 회원으로 이전(복사) 처리
* @param addrVO
* @param addrGroupVO
* @param addrTransHistVO
* @return
* @throws Exception
*/
@RequestMapping("/web/mjon/fax/addr/transFaxAddrGroupAjax.do")
public ModelAndView transFaxAddrGroupAjax(FaxAddrVO addrVO, FaxAddrGroupVO addrGroupVO, FaxAddrTransHistVO addrTransHistVO) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
try {
String successCd = faxAddrService.updateFaxAddrAnotherMember(addrVO, addrGroupVO, addrTransHistVO);
modelAndView.addObject("status", "success");
modelAndView.addObject("result", successCd);
}catch(Exception e) {
e.printStackTrace();
modelAndView.addObject("status", "fail");
return modelAndView;
}
return modelAndView;
}
/**
* 팩스 주소록 사용자 화면 껍데기
* @param FaxAddrVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/web/mjon/fax/addr/selectFaxAddrList.do")
public String selectFaxAddrWebList(@ModelAttribute("searchVO") FaxAddrVO faxAddrVO
, FaxAddrGroupVO faxAddrGroupVO, ModelMap model, RedirectAttributes redirectAttributes) throws Exception {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId == "") {
/*redirectAttributes.addFlashAttribute("fail", true);*/
//redirectAttributes.addFlashAttribute("message", "문자온 서비스는 로그인 후 이용 가능합니다.");
return "redirect:/web/user/login/login.do";
}
return "/web/fax/addr/FaxAddrList";
}
/**
* 주소록 그룹 선택시 우측 주소록 리스트 화면 불러오기
*
* @param AddrGroupVO
* @param AddrVO
* @param sessionVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value= {"/web/mjon/fax/addr/selectFaxAddrListAjax.do"})
public ModelAndView selectMsgAddrListAjax(
@ModelAttribute("searchVO") FaxAddrVO faxAddrVO,
ModelMap model,
RedirectAttributes redirectAttributes) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId != "") {
faxAddrVO.setMberId(userId);
}else {
modelAndView.addObject("message", "로그인 후 이용이 가능합니다.");
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
try {
List<FaxAddrVO> resultAddrList = faxAddrService.selectFaxAddrListAjax(faxAddrVO);
modelAndView.addObject("resultAddrList", resultAddrList);
modelAndView.addObject("result", "success");
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
return modelAndView;
}
/**
* 사용자 팩스 주소록 리스트 Ajax
* @param request
* @param model
* @param addrVO
* @param redirectAttributes
* @return
* @throws Exception
*/
@RequestMapping("/web/mjon/fax/addr/selectFaxAddrAjax.do")
public String selectFaxAddrAjax(HttpServletRequest request, ModelMap model,
@ModelAttribute("searchVO") FaxAddrVO addrVO) throws Exception {
//로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId != "") {
addrVO.setMberId(userId);
}
if(addrVO.getPageUnit() != 10) {
addrVO.setPageUnit(addrVO.getPageUnit());
}
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(addrVO.getPageIndex());
paginationInfo.setRecordCountPerPage(addrVO.getPageUnit());
paginationInfo.setPageSize(addrVO.getPageSize());
addrVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
addrVO.setLastIndex(paginationInfo.getLastRecordIndex());
addrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
addrVO.setSearchSortCnd("addrId");
addrVO.setSearchSortOrd("asc");
}
List<FaxAddrVO> addrList = faxAddrService.selectFaxAddrList(addrVO);
int totCnt = 0;
if(addrList.size() > 0) {
totCnt = addrList.get(0).getTotcnt();
}
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("paginationInfo", paginationInfo);
model.addAttribute("addrList", addrList);
model.addAttribute("startKeyword",addrVO.getStartKeyword());
model.addAttribute("userId", userId);
return "/web/fax/addr/FaxAddrListAjax";
}
/**
* 사용자 주소록 중복 리스트 Ajax
* @param request
* @param model
* @param addrVO
* @param redirectAttributes
* @return
* @throws Exception
*/
@RequestMapping("/web/mjon/fax/addr/selectFaxAddrDupliAjax.do")
public String selectFaxAddrDupliAjax(HttpServletRequest request, ModelMap model,
@ModelAttribute("searchVO") FaxAddrVO addrVO) throws Exception {
//로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId != "") {
addrVO.setMberId(userId);
}
if(addrVO.getPageUnit() != 10) {
addrVO.setPageUnit(addrVO.getPageUnit());
}
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(addrVO.getPageIndex());
paginationInfo.setRecordCountPerPage(addrVO.getPageUnit());
paginationInfo.setPageSize(addrVO.getPageSize());
addrVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
addrVO.setLastIndex(paginationInfo.getLastRecordIndex());
addrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
addrVO.setSearchSortCnd("addrId");
addrVO.setSearchSortOrd("asc");
}
List<FaxAddrVO> addrDupliList = faxAddrService.selectFaxAddrDupliListByAll(addrVO);
int totCnt = 0;
if(addrDupliList.size() > 0) {
totCnt = addrDupliList.get(0).getTotcnt();
}
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("paginationInfo2", paginationInfo);
model.addAttribute("addrDupliList", addrDupliList);
return "/web/fax/addr/FaxAddrListDupliAjax";
}
@RequestMapping("/web/mjon/fax/addr/selectFaxAddrPrintAjax.do")
public String selectFaxAddrPrint(@RequestParam("cellCheck2") String[] cellCheck,
FaxAddrVO addrVO,
HttpServletRequest request,
HttpServletResponse response ,
ModelMap model) throws Exception {
//로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId != "") {
addrVO.setMberId(userId);
}
addrVO.setRecordCountPerPage(100000);
addrVO.setFirstIndex(0);
List<FaxAddrVO> addrList = faxAddrService.selectFaxAddrList(addrVO);
String chk = "";
for(int i=0; i<cellCheck.length; i++ ) {
chk += cellCheck[i] + ",";
}
model.addAttribute("chk", chk);
model.addAttribute("addrList", addrList);
return "/web/fax/addr/FaxAddrListPrint";
}
/**
* 주소록 상세정보 ajax
* @param addrCheck
* @param request
* @param addrVO
* @param model
* @param redirectAttributes
* @return
* @throws Exception
*/
@RequestMapping("/web/mjon/fax/addr/selectFaxAddrDetailAjax.do")
public ModelAndView selectAddrDetailAjax(HttpServletRequest request,
FaxAddrVO addrVO, Model model) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
boolean isSuccess = true;
String msg = "";
FaxAddrVO addrInfo = null;
try {
addrInfo = faxAddrService.selectFaxAddrDetail(addrVO);
} catch (Exception e) {
isSuccess = false;
msg = e.getMessage();
}
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
modelAndView.addObject("addrInfo", addrInfo);
return modelAndView;
}
/**
* 주소록 그룹 삭제 로직 ajax
*
* @param request
* @param addrGroupVO
* @param redirectAttributes
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/web/mjon/fax/addr/deleteFaxAddrAjax.do")
public ModelAndView deleteFaxAddrAjax(@RequestParam(value="addrCheck", defaultValue="0") String[] addrCheck, HttpServletRequest request,
FaxAddrVO addrVO, Model model
,RedirectAttributes redirectAttributes
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
addrVO.setLastUpdusrId(user.getId());
addrVO.setMberId(user.getId());
//단일삭제
if(!"".equals(addrVO.getAddrId())) {
addrCheck[0] = addrVO.getAddrId();
}
for(String id:addrCheck) {
try {
addrVO.setAddrId(id);
faxAddrService.deleteFaxAddr(addrVO);
modelAndView.addObject("result", "success");
} catch (Exception e) {
e.printStackTrace();
modelAndView.addObject("result", "fail");
return modelAndView;
}
}
return modelAndView;
}
/**
* 주소록 등록 로직 (ajax)
* @param addrVO
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/web/mjon/fax/addr/insertFaxAddrAjax.do")
public ModelAndView insertFaxAddrAjax(HttpServletRequest request, ModelMap model,
FaxAddrVO addrVO
) throws Exception {
ModelAndView mv = new ModelAndView();
mv.setViewName("jsonView");
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
addrVO.setMberId(userId);
if("bookmark".equals(addrVO.getAddrGrpId())) {
addrVO.setBookmark("Y");
addrVO.setAddrGrpId("0");
}
//String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
String addrPhoneNo = addrVO.getAddrPhoneNo();
//if(addrPhoneNo.matches(phoneRegExp)) {
if(!MJUtil.checkFaxNum(addrPhoneNo)) {
mv.addObject("result","faxNumberFail");
mv.addObject("message", "올바른 팩스 번호가 아닙니다.");
return mv;
}
int usedCnt = faxAddrService.selectDuplFaxAddrCnt(addrVO);
if(usedCnt > 0) {
mv.addObject("result","dupl");
}else {
if(userId != "") {
try {
faxAddrService.insertFaxAddr(addrVO);
mv.addObject("result","success");
} catch (Exception e) {
e.printStackTrace();
mv.addObject("result","fail");
}
} else {
mv.addObject("result","fail");
}
}
return mv;
}
/**
* 주소록 다중수정 ajax
* @param addrCheck
* @param request
* @param addrVO
* @param model
* @param redirectAttributes
* @return
* @throws Exception
*/
@RequestMapping("/web/mjon/fax/addr/updateFaxAddrListAjax.do")
public ModelAndView updateFaxAddrListAjax(HttpServletRequest request,
FaxAddrVO addrVO, Model model
,RedirectAttributes redirectAttributes
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
addrVO.setLastUpdusrId(user.getId());
addrVO.setMberId(user.getId());
int listSize = addrVO.getAddrIds().length;
for(int i=0; i<listSize; i++) {
try {
// JSP 2023.04.07 => 주소록그룹 수정 추가
if (addrVO.getAddrGrpIds()[i].equals("bookmark")) {
// 자주보내는 번호
addrVO.setAddrGrpId("0");
addrVO.setBookmark("Y");
}
else {
addrVO.setAddrGrpId(addrVO.getAddrGrpIds()[i]);
addrVO.setBookmark("N");
}
addrVO.setAddrId(addrVO.getAddrIds()[i]);
if(addrVO.getAddrPhones().length > 0) {
addrVO.setAddrPhoneNo(addrVO.getAddrPhones()[i]);
}
else {
addrVO.setAddrPhoneNo(null);
}
if(addrVO.getAddrNms().length > 0) {
addrVO.setAddrNm(addrVO.getAddrNms()[i]);
}
else {
addrVO.setAddrNm(null);
}
faxAddrService.updateFaxAddr(addrVO);
modelAndView.addObject("result", "success");
} catch (Exception e) {
e.printStackTrace();
modelAndView.addObject("result", "fail");
return modelAndView;
}
}
return modelAndView;
}
/**
* 주소록 다중수정 ajax
* @param addrCheck
* @param request
* @param addrVO
* @param model
* @param redirectAttributes
* @return
* @throws Exception
*/
@RequestMapping("/web/mjon/fax/addr/updateFaxAddrAjax.do")
public ModelAndView updateFaxAddrAjax(@RequestParam("addrCheck") String[] addrCheck, HttpServletRequest request,
FaxAddrVO addrVO, Model model
,RedirectAttributes redirectAttributes
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
addrVO.setLastUpdusrId(user.getId());
addrVO.setMberId(user.getId());
for(String id:addrCheck) {
try {
if("0".equals (addrVO.getAddrGrpId())) {
addrVO.setBookmark("Y");
} else if(addrVO.getAddrGrpId() != null && !"".equals(addrVO.getAddrGrpId())) {
addrVO.setBookmark("N");
}
addrVO.setAddrId(id);
faxAddrService.updateMemoFaxAddr(addrVO);
modelAndView.addObject("result", "success");
} catch (Exception e) {
e.printStackTrace();
modelAndView.addObject("result", "fail");
return modelAndView;
}
}
return modelAndView;
}
/**
* 주소록 그룹이동 ajax
* @param addrCheck
* @param request
* @param addrVO
* @param model
* @param redirectAttributes
* @return
* @throws Exception
*/
@RequestMapping("/web/mjon/fax/addr/updateFaxAddrMoveGrpAjax.do")
public ModelAndView updateFaxAddrMoveGrpAjax(@RequestParam("addrCheck") String[] addrCheck,
@RequestParam("addrPhoneNos") String[] addrPhoneNos,
HttpServletRequest request,
FaxAddrVO addrVO, Model model,
RedirectAttributes redirectAttributes
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
addrVO.setLastUpdusrId(user.getId());
addrVO.setMberId(user.getId());
// 그룹미지정, 자주보내는 번호 구분처리
if("0".equals (addrVO.getAddrGrpId())) {
// 그룹미지정
addrVO.setBookmark("N");
}
else if("bookmark".equals (addrVO.getAddrGrpId())) {
// 자주보내는 번호
addrVO.setBookmark("Y");
addrVO.setAddrGrpId("0");
}
else if(addrVO.getAddrGrpId() != null && !"".equals(addrVO.getAddrGrpId())) {
addrVO.setBookmark("N");
}
/**
* 보내려는 그룹에 등록되어있는 전화번호를 변수에 담아둠
*/
List<?> addrPhoneList = faxAddrService.selectPhoneNumInFaxAddrGroup(addrVO);
String phoneNos = "";
for(int i=0; i<addrPhoneList.size(); i++) {
if(i == 0) {
phoneNos = ((FaxAddrVO)addrPhoneList.get(i)).getAddrPhoneNo();
} else {
phoneNos = phoneNos + "," + ((FaxAddrVO)addrPhoneList.get(i)).getAddrPhoneNo();
}
}
/**
* 2. 넘어온 주소록 id를 db조회하여 리스트로 받아옴
*/
String duplYn = "N";
for(String phoneNo:addrPhoneNos) {
if(phoneNos != null && phoneNos.contains(phoneNo)) {
modelAndView.addObject("result","dupl");
duplYn = "Y";
break;
}
}
if(duplYn == "N") {
for(String id:addrCheck) {
try {
addrVO.setAddrId(id);
faxAddrService.updateFaxAddrGrp(addrVO);
modelAndView.addObject("result", "success");
} catch (Exception e) {
e.printStackTrace();
modelAndView.addObject("result", "fail");
return modelAndView;
}
}
}
return modelAndView;
}
/**
* 주소록 복사 ajax
* @param addrCheck
* @param request
* @param addrVO
* @param model
* @param redirectAttributes
* @return
* @throws Exception
*/
@RequestMapping("/web/mjon/fax/addr/insertCopyFaxAddrAjax.do")
public ModelAndView insertCopyFaxAddrAjax(@RequestParam("addrCheck") String[] addrCheck,
@RequestParam("addrPhoneNos") String[] addrPhoneNos,
HttpServletRequest request,
FaxAddrVO addrVO, Model model,
RedirectAttributes redirectAttributes
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
addrVO.setMberId(user.getId());
// 그룹미지정, 자주보내는 번호 구분처리
if("0".equals (addrVO.getAddrGrpId())) {
// 그룹미지정
addrVO.setBookmark("N");
}
else if("bookmark".equals (addrVO.getAddrGrpId())) {
// 자주보내는 번호
addrVO.setBookmark("Y");
addrVO.setAddrGrpId("0");
}
else if(addrVO.getAddrGrpId() != null && !"".equals(addrVO.getAddrGrpId())) {
addrVO.setBookmark("N");
}
/**
* 복사하려는 그룹에 등록되어있는 전화번호를 변수에 담아둠
*/
List<?> addrPhoneList = faxAddrService.selectPhoneNumInFaxAddrGroup(addrVO);
String phoneNos = "";
for(int i=0; i<addrPhoneList.size(); i++) {
if(i == 0) {
phoneNos = ((FaxAddrVO)addrPhoneList.get(i)).getAddrPhoneNo();
} else {
phoneNos = phoneNos + "," + ((FaxAddrVO)addrPhoneList.get(i)).getAddrPhoneNo();
}
}
/**
* 2. 넘어온 주소록 id를 db조회하여 리스트로 받아옴
*/
String duplYn = "N";
for(String phoneNo:addrPhoneNos) {
if(phoneNos != null && phoneNos.contains(phoneNo)) {
modelAndView.addObject("result","dupl");
duplYn = "Y";
break;
}
}
if(duplYn == "N") {
for(String id:addrCheck) {
try {
addrVO.setAddrId(id);
faxAddrService.insertCopyFaxAddr(addrVO);
modelAndView.addObject("result", "success");
} catch (Exception e) {
e.printStackTrace();
modelAndView.addObject("result", "fail");
return modelAndView;
}
}
}
return modelAndView;
}
/**
* 주소록 그룹 내 휴대폰번호 중복체크
*
* @param addrVO
* @return
* @throws Exception
*/
@RequestMapping("/uss/ion/fax/addr/selectDuplFaxAddrAjax.do")
public ModelAndView selectDuplFaxAddrAjax(FaxAddrVO addrVO) throws Exception {
ModelAndView mv = new ModelAndView();
mv.setViewName("jsonView");
int usedCnt = faxAddrService.selectDuplFaxAddrCnt(addrVO);
mv.addObject("usedCnt", usedCnt);
return mv;
}
/**
* 주소록 폰주소록 가이드 이동
*
* @param addrVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/web/mjon/fax/addr/faxAddrMobGuide.do")
public String faxAddrMobGuide(ModelMap model) throws Exception {
return "/web/fax/addr/FaxAddrMobGuide";
}
/**
* 선택한 주소록을 문자전송 화면으로 보내기
* @param addrVO
* @param req
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value= {"/web/mjon/fax/addr/selectFaxAddrDataListAjax.do"})
public ModelAndView selectFaxAddrDataListAjax(
FaxAddrVO addrVO,
HttpServletRequest req,
ModelMap model) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
modelAndView.addObject("status", "loginFail");
modelAndView.addObject("message", "로그인이 필요합니다.");
return modelAndView;
}else {
addrVO.setMberId(userId);
}
List<String> addrIdList = addrVO.getAddrIdList();
List<String> tempList = new ArrayList<String>();
for(String seqStr : addrIdList) {
String seqId = seqStr.replace("[", "");
seqId = seqId.replace("]", "");
tempList.add(seqId);
}
addrVO.setAddrIdList(tempList);
List<FaxAddrVO> resultList = faxAddrService.selectFaxAddrDataList(addrVO);
if(resultList == null) {
modelAndView.addObject("status", "emptyList");
modelAndView.addObject("message", "가져온 주소록 목록이 없습니다.");
}else {
modelAndView.addObject("status", "success");
modelAndView.addObject("resultList", resultList);
modelAndView.addObject("resultListCnt", resultList.size());
}
return modelAndView;
}
//주소록 엑셀 다운로드
@RequestMapping("/web/mjon/fax/addr/faxAddrExcelDownload.do")
public void faxAddrExcelDownload(@RequestParam("cellCheck") String[] cellCheck,
FaxAddrVO addrVO,
HttpServletRequest request,
HttpServletResponse response ,
ModelMap model) throws Exception {
addrVO.setRecordCountPerPage(100000);
addrVO.setFirstIndex(0);
if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
addrVO.setSearchSortCnd("addrId");
addrVO.setSearchSortOrd("asc");
}
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
// 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다.
SXSSFWorkbook wb = new SXSSFWorkbook(100);
CellStyle styleHeader = wb.createCellStyle();
styleHeader.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게
styleHeader.setBorderLeft(CellStyle.BORDER_THIN);
styleHeader.setBorderRight(CellStyle.BORDER_THIN);
styleHeader.setBorderTop(CellStyle.BORDER_THIN);
CellStyle styleList = wb.createCellStyle();
Font font = wb.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold
Cell cell = null;
Row row = null;
String fileName ="주소록";
String sheetTitle = "";
try{
if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
addrVO.setSearchSortOrd("desc");
}
addrVO.setMberId(loginVO.getId());
List<FaxAddrVO> addrList = faxAddrService.selectFaxAddrList(addrVO);
{
// row, cell 개수 순서대로 증가용 필드
int rowNumber = 0;
int celNumber = 0;
//화면 리스트
sheetTitle = "주소록" ; //제목
Sheet sheet = wb.createSheet(sheetTitle);
row = sheet.createRow(rowNumber++);
row = sheet.createRow(rowNumber++); //줄추가
//cell = row.createCell(celNumber++);
//cell.setCellValue("번호");
//cell.setCellStyle(style);
int y = 0;
for(String field : cellCheck) {
//셀 칼럼 크기 설정
sheet.setColumnWidth(y, 4000);
cell = row.createCell(celNumber++);
cell.setCellValue(addrVO.getHeaderName(field));
cell.setCellStyle(styleHeader);
y++;
}
for(int i=0; i < addrList.size(); i++){
row = sheet.createRow(rowNumber++); //줄추가
celNumber = 0;
//cell = row.createCell(celNumber++);
//cell.setCellStyle(style);
//cell.setCellValue(i+1); //번호
for(String field : cellCheck) {
cell = row.createCell(celNumber++);
cell.setCellStyle(styleList);
cell.setCellValue(((FaxAddrVO)addrList.get(i)).getFieldValue(field));
}
}
}
response.setHeader("Set-Cookie", "fileDownload=true; path=/");
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA );
Date currentTime = new Date ();
String mTime = mSimpleDateFormat.format ( currentTime );
fileName = fileName+"("+mTime+")";
response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx"));
wb.write(response.getOutputStream());
}catch(Exception e) {
response.setHeader("Set-Cookie", "fileDownload=false; path=/");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Content-Type","text/html; charset=utf-8");
OutputStream out = null;
try {
out = response.getOutputStream();
byte[] data = new String("fail..").getBytes();
out.write(data, 0, data.length);
} catch(Exception ignore) {
ignore.printStackTrace();
} finally {
if(out != null) try { out.close(); } catch(Exception ignore) {}
}
}finally {
// 디스크 적었던 임시파일을 제거합니다.
wb.dispose();
try { wb.close(); } catch(Exception ignore) {}
}
}
/**
* 주소록 대량등록 - 엑셀파일 불러오기
* @param body
* @param uploadFile
* @param search
* @param result
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping(value = "/web/mjon/fax/addr/sendExelFilePhoneNumAjax.do")
@ResponseBody
public Object sendExelFilePhoneNumAjax(final MultipartHttpServletRequest multiRequest) throws Exception {
JsonResult jr = new JsonResult();
jr.setSuccess(false);
jr.setMessage("엑셀 파일만 업로드할 수 있습니다.");
try {
//final Map<String, MultipartFile> files = multiRequest.getFileMap();
List<MultipartFile> files = (List<MultipartFile>) multiRequest.getFiles("file0");
// 파일명에 .이 있을경우 오류 => Ex) 테스트6.20.xlsx
int fileNameSplitCnt = 0;
if(!files.isEmpty()) {
fileNameSplitCnt = files.get(0).getOriginalFilename().split("[.]").length;
//System.out.println("fileNameSplitCnt : " + fileNameSplitCnt);
if (files.get(0).getSize() > 0
&& (files.get(0).getContentType().indexOf("spreadsheetml") > -1)
|| files.get(0).getContentType().indexOf("ms-excel") > -1
|| files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1].indexOf("xlsx") > -1
|| files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1].indexOf("xls") > -1) {
// 엑셀 파일 용량 3MB이상 시 10만건 이상으로 서버가 다운되는 증상 발생
long fileSize = multiRequest.getFile("file0").getSize();
if(fileSize > 3374653) {
jr.setMessage("엑셀 파일은 3MB를 넘을수 없습니다.");
return jr;
}
String Ext = files.get(0).getOriginalFilename().split("[.]")[1];
String errMessage = "";
String cellValue = "";
String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
//String phoneRegExp = "^(050[234567]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
int errPhoneCnt = 0;
int errNameCnt = 0;
/*int errRep1Cnt = 0;
int errRep2Cnt = 0;
int errRep3Cnt = 0;
int errRep4Cnt = 0;*/
int errMemoCnt = 0;
//엑셀 확장자에 따른 처리 로직 분리
if(Ext.equals("xls")) {
HSSFWorkbook workbook = new HSSFWorkbook(files.get(0).getInputStream());
HSSFSheet sheet = workbook.getSheetAt(0);
if(sheet.getLastRowNum() > 20000) { //
errMessage = "2만줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.";
jr.setSuccess(false);
jr.setMessage(errMessage);
return jr;
}
List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>();
PhoneVO pVO = new PhoneVO();
for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
HSSFRow row = sheet.getRow(i); //열읽기
if(null == row) {
continue;
}
HashMap<String, String> jm = new HashMap<>();
// 행의 두번째 열(이름부터 받아오기)
HSSFCell cell = null;
boolean errSts = true;
for(int j = 0 ; j < 3; j++){ //행읽기(6행까지나 2행까지만 필요)
cellValue = "";
cell = row.getCell(j); //이름/핸드폰/info1/info2/info3/info4/메모
if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
if(j == 1) {
if (sheet.getLastRowNum() == i) {
continue;
}
//errPhoneCnt++;
//errSts = false;
break;
}
}
if(null != cell){
switch(cell.getCellType()){ //숫자타임을 문자로 변환
case Cell.CELL_TYPE_NUMERIC:
cell.setCellType(Cell.CELL_TYPE_STRING);
}
cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ;
}
if(j == 0) {
//이름
boolean nmChk = getNameRepLenChk("name", cellValue);
if(nmChk && errSts) {
jm.put("name", cellValue);
}else {
errNameCnt++;
errSts = false;
break;
}
}
if(j == 1) {
// 문자열에서 숫자만 추출
cellValue = getOnlyNumber(cellValue);
//전화번호
if(MJUtil.checkFaxNum(cellValue) && errSts) {//휴대폼 번호 타입이 아닌 경우에만 저장 되도록 함
jm.put("phone", cellValue);
}else {
errPhoneCnt++;
errSts = false;
break;
}
}
if(j == 2) {
//메모
boolean repChk = getNameRepLenChk("memo", cellValue);
if(repChk && errSts) {
jm.put("memo", cellValue);
}else {
errMemoCnt++;
errSts = false;
break;
}
}
}
if(null != jm.get("phone")) {
json.add(jm);
}
}
int resultErrCnt = errPhoneCnt + errNameCnt + errMemoCnt;
jr.setData(json);
jr.setSuccess(true);
if(resultErrCnt > 0) {
jr.setMessage("올바르지 않은 팩스 번호가 "+ resultErrCnt +" 건 있습니다.");
}else {
jr.setMessage("");
}
}else { //확장자가 xlsx
OPCPackage opcPackage = OPCPackage.open(files.get(0).getInputStream());
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);
XSSFSheet sheet = workbook.getSheetAt(0); // 첫번째 시트 불러오기
opcPackage.close();
//실제 데이터가 있는 셀의 갯수를 카운팅 한다.(팩스번호만 체크)
int totRowDataCnt = 0;
for(int r=1; r<sheet.getPhysicalNumberOfRows(); r++) {
XSSFRow tmpRow = sheet.getRow(r);
//System.out.println("=================r:"+r);
XSSFCell cell = null;
if(tmpRow.getCell(1) != null) {
cell = tmpRow.getCell(1); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5
if(cell != null && !cell.toString().trim().equals("")) {
//System.out.println("value-" + r + ":" +cell.getStringCellValue());
totRowDataCnt++;
//System.out.println("tmpRowCnt:"+totRowDataCnt);
}
}
}
System.out.println("+++++++++++++++++ totRowDataCnt ::: " + totRowDataCnt);
//if(sheet.getLastRowNum() > 20000) { //
if(totRowDataCnt > 20001) { //
errMessage = "2만줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.";
jr.setSuccess(false);
jr.setMessage(errMessage);
return jr;
}
List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>();
PhoneVO pVO = new PhoneVO();
//for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
for(int i=2; i< totRowDataCnt + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
XSSFRow row = sheet.getRow(i); //열읽기
System.out.println(i);
if(null == row) {
continue;
}
HashMap<String, String> jm = new HashMap<>();
// 행의 두번째 열(핸드폰부터 받아오기)
XSSFCell cell = null;
boolean errSts = true;
for(int j = 0 ; j < 3; j++){ //행읽기(6행까지나 2행까지만 필요)
cellValue = "";
cell = row.getCell(j); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5/메모
if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
if(j == 1) {
if (sheet.getLastRowNum() == i) {
continue;
}
//errPhoneCnt++;
//errSts = false;
break;
}
}
if(null != cell){
switch(cell.getCellType()){ //숫자타임을 문자로 변환
case Cell.CELL_TYPE_NUMERIC:
cell.setCellType(Cell.CELL_TYPE_STRING);
}
cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ;
}
if(j == 0) {
//이름
boolean nmChk = getNameRepLenChk("name", cellValue);
if(nmChk && errSts) {
jm.put("name", cellValue);
}else {
errNameCnt++;
errSts = false;
break;
}
}
if(j == 1) {
// 문자열에서 숫자만 추출
cellValue = getOnlyNumber(cellValue);
//전화번호
if(MJUtil.checkFaxNum(cellValue) && errSts) {
jm.put("phone", cellValue);
}else {
errPhoneCnt++;
errSts = false;
break;
}
}
if(j == 2) {
//메모
boolean repChk = getNameRepLenChk("memo", cellValue);
if(repChk && errSts) {
jm.put("memo", cellValue);
}else {
errMemoCnt++;
errSts = false;
break;
}
}
}
if(null != jm.get("phone") && errSts) {
json.add(jm);
}
}
int resultErrCnt = errPhoneCnt + errNameCnt ;
jr.setData(json);
jr.setSuccess(true);
if(resultErrCnt > 0) {
jr.setMessage("올바르지 않은 팩스 번호가 "+ resultErrCnt +" 건 있습니다.");
}else {
jr.setMessage("");
}
} //xlsx 처리 끝
}
else {
String ttt = files.get(0).getSize() + "_" +
files.get(0).getContentType() + "_" +
files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1];
jr.setSuccess(false);
jr.setMessage("엑셀파일 인식오류.");
//jr.setMessage("엑셀파일 인식오류" + ttt);
}
}
else {
jr.setSuccess(false);
jr.setMessage("엑셀파일 인식오류.");
}
return jr;
} catch (Exception e) {
System.out.println("+++++++++++++++ sendExelFilePhoneNumAjax Fax Controller Error!!! "+e);
jr.setSuccess(false);
jr.setMessage("엑셀파일 인식오류.");
return jr;
}
}
/**
* 주소록 대량등록 - TXT파일 불러오기
* @param body
* @param uploadFile
* @param search
* @param result
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping(value = "/web/mjon/fax/addr/sendTxtFilePhoneNumAjax.do")
@ResponseBody
public Object sendTxtFilePhoneNumAjax(final MultipartHttpServletRequest multiRequest) throws Exception {
JsonResult jr = new JsonResult();
jr.setSuccess(false);
jr.setMessage("TXT 파일만 업로드할 수 있습니다.");
List<MultipartFile> files = (List<MultipartFile>) multiRequest.getFiles("file0");
if(!files.isEmpty()) {
if (files.get(0).getSize() > 0
|| files.get(0).getOriginalFilename().split("[.]")[1].indexOf("txt") > -1) {
// txt 파일 용량 3MB이상 시 10만건 이상으로 서버가 다운되는 증상 발생
long fileSize = multiRequest.getFile("file0").getSize();
if(fileSize > 3374653) {
jr.setMessage("txt 파일은 3MB를 넘을수 없습니다.");
return jr;
}
BufferedReader reader = new BufferedReader(new InputStreamReader(multiRequest.getFile("file0").getInputStream()));
String line = null;
String[] splitedStr = null;
String[] tempStr = null;
int errPhoneCnt = 0;
int totRowNum = 0;
//String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
//String phoneRegExp = "^(050[234567]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>();
//파일 읽어서 탭으로 구분해주기
while ((line = reader.readLine()) != null) {
HashMap<String, String> jm = new HashMap<>();
splitedStr = null;
tempStr = null;
//txt 파일의 데이터가 탭 혹은 콤마로 구분되어 있는지 구분처리
tempStr = line.split("\\,");
if(tempStr.length > 1) {
splitedStr = line.split("\\,");
}else {
splitedStr = line.split("\t");;
}
for (int i = 0; i < splitedStr.length; i++) {
splitedStr[i] = splitedStr[i].trim();
if(i == 0) {
//이름
jm.put("name", splitedStr[i]);
}
if(i == 1) {
// 문자열에서 숫자만 추출
splitedStr[i] = getOnlyNumber(splitedStr[i]);
if(MJUtil.checkFaxNum(splitedStr[i])) {//휴대폰번호 타입이 아닌 경우만 입력 되도록 함.
//팩스 번호
jm.put("phone", splitedStr[i]);
}else {
errPhoneCnt++;
}
}
if(i == 2) {
//메모
jm.put("memo", splitedStr[i]);
}
}
if(jm.get("phone") != null) {
json.add(jm);
}
totRowNum++;
} // end while
jr.setData(json);
jr.setSuccess(true);
if (totRowNum > 20000) {
jr.setMessage("20000");
}
else {
if(errPhoneCnt > 0) {
jr.setMessage("올바르지 않은 팩스 번호가 "+ errPhoneCnt +" 건 있습니다.");
}else {
jr.setMessage("");
}
}
}
}
return jr;
}
/**
* 주소록 대량등록 저장
* @param searchVO
* @param model
* @return "/web/mjon/addr/addrMassInsertByTempAjax.do"
* @throws Exception
*/
@RequestMapping(value= {"/web/mjon/fax/addr/faxAddrMassInsertByTempAjax.do"})
public ModelAndView faxAddrMassInsertByTempAjax(@ModelAttribute("searchVO") FaxAddrVO addrVO,
RedirectAttributes redirectAttributes,
ModelMap model) throws Exception{
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
//String phoneRegExp = "^(050[234567]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
boolean isSuccess = true;
String msg = "";
int resultCnt = 0;
int dupliCnt = 0; // 중복 데이터 수
int errPhoneCnt = 0;
List<FaxAddrVO> addrMassDupliList = new ArrayList<FaxAddrVO>(); // 중복 휴대폰번호
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
isSuccess = false;
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", "로그인 후 이용이 가능합니다.");
return modelAndView;
}
else {
addrVO.setMberId(userId);
}
//회원별 주소록 전체 갯수 조회
int addrBefAfterCnt = 0;
int addrBefCnt = faxAddrService.selectFaxAddrTotalCount(addrVO);
int addrNewCnt = addrVO.getPhoneList().length; //신규 추가할 주소록 갯수
int sumAddrCnt = addrBefCnt + addrNewCnt; //기존 + 신규 주소록 합산
// 신규 주소록 여부 체크
if (addrVO.getAddrGrpId().equals("NEW")) {
FaxAddrGroupVO addrGroupVO = new FaxAddrGroupVO();
addrGroupVO.setMberId(userId);
addrGroupVO.setAddrGrpNm(addrVO.getAddrGrpNm());
// 정렬순서
int nextOrderNumber = faxAddrGroupService.selectMaxOrderFaxNumber(addrGroupVO);
addrGroupVO.setGrpOrder(nextOrderNumber);
faxAddrGroupService.insertFaxAddrGroup(addrGroupVO);
// 신규 추가한 그룹아이디
addrVO.setAddrGrpId(addrGroupVO.getAddrGrpId());
}
// 그룹미지정, 자주보내는 번호 구분처리
if("bookmark".equals (addrVO.getAddrGrpId())) {
// 자주보내는 번호
addrVO.setBookmark("Y");
addrVO.setAddrGrpId("0");
}
else {
addrVO.setBookmark("N");
}
// 2024.01.24 10만건 -> 50만건으로 증설 요청으로 인한 증설
List<FaxAddrVO> addrDataInfo = new ArrayList<FaxAddrVO>();
if(addrBefCnt < 500000) { // 기존 등록된 주소록이 10만건 미만이면
//받는사람 리스트 건수 체크해주기
if(sumAddrCnt > 500000) {
isSuccess = false;
msg = "주소록은 총 50만개까지만 등록이 가능합니다.";
}
else {
for(int i=0; i < addrNewCnt; i++) {
FaxAddrVO tempAddrVO = new FaxAddrVO();
if(addrVO.getNameList().length > 0) {
if(addrVO.getNameList()[i].equals("-")) {
tempAddrVO.setAddrNm(null);
}else {
String tmpNm = addrVO.getNameList()[i].trim().replaceAll("§", ",");
int nmLen = tmpNm.length();
if(nmLen > 12) {
//isSuccess = false;
//msg = "이름 항목의 내용(\" " + tmpNm + " \")이 길이를 초과하여 입력되었습니다. 12글자 이하로 입력해 주세요.";
//break;
tempAddrVO.setAddrNm(addrVO.getNameList()[i].trim().replaceAll("§", ",").substring(0, 12));
}else {
tempAddrVO.setAddrNm(addrVO.getNameList()[i].trim().replaceAll("§", ","));
}
}
}
else {
tempAddrVO.setAddrNm(null);
}
if(addrVO.getPhoneList().length > 0) {
if(addrVO.getPhoneList()[i].equals("-")) {
tempAddrVO.setAddrPhoneNo(null);
}else {
tempAddrVO.setAddrPhoneNo(addrVO.getPhoneList()[i].trim().replaceAll("§", ","));
}
}
else {
tempAddrVO.setAddrPhoneNo(null);
}
if(addrVO.getMemoList().length > 0) {
if(addrVO.getMemoList()[i].equals("-")) {
tempAddrVO.setAddrComment(null);
}else {
String tmpComment = addrVO.getMemoList()[i].replaceAll("§", ",");
int commLen = tmpComment.length();
if(commLen > 125) {
//isSuccess = false;
//msg = "메모 항목의 내용(\" " + tmpComment + " \")이 길이를 초과하여 입력되었습니다. 100글자 이하로 입력해 주세요.";
//break;
tempAddrVO.setAddrComment(addrVO.getMemoList()[i].replaceAll("§", ",").substring(0, 125));
}else {
tempAddrVO.setAddrComment(addrVO.getMemoList()[i].replaceAll("§", ","));
}
}
}
else {
tempAddrVO.setAddrComment(null);
}
tempAddrVO.setMberId(userId);
tempAddrVO.setFrstRegisterId(userId);
tempAddrVO.setAddrGrpId(addrVO.getAddrGrpId()); // 그룹 지정
// 그룹미지정, 자주보내는 번호 구분처리
if("Y".equals (addrVO.getBookmark())) {
// 자주보내는 번호
tempAddrVO.setBookmark("Y");
tempAddrVO.setAddrGrpId("0");
}
else {
tempAddrVO.setBookmark("N");
}
FaxAddrVO addrVO2 = new FaxAddrVO();
addrVO2.setMberId(userId);
addrVO2.setAddrGrpId(addrVO.getAddrGrpId()); // 그룹 지정
addrVO2.setAddrPhoneNo(addrVO.getPhoneList()[i]); // 연락처
// 팩스 번호 유효성 검사
boolean isPhoneNoErr = true;
if(!addrVO.getPhoneList()[i].matches(phoneRegExp)) {//휴대폼 번호 타입이 아닌 경우에만 통과 되도록 함
isPhoneNoErr = false;
}else {
errPhoneCnt++;
}
//int usedCnt = addrService.selectDuplAddrCnt(addrVO2);
if(isPhoneNoErr == false) {
//주소록 리스트에 데이터 추가해 주기
addrDataInfo.add(tempAddrVO);
}
}
System.out.println("======================================================");
System.out.println("+++++++++++++++++++++++++ isSuccess ::: "+isSuccess);
System.out.println("======================================================");
//주소록에 데이터 추가해 주기
if (isSuccess == true && addrDataInfo.size() > 0) {
// 주소록 대량등록 By Temp 주소록 All
resultCnt = faxAddrService.insertFaxAddrByTempAddrAll(addrDataInfo, addrVO);
addrBefAfterCnt = faxAddrService.selectFaxAddrTotalCount(addrVO);
addrMassDupliList = faxAddrService.selectTempFaxAddrDupliList(addrVO);
resultCnt = addrBefAfterCnt - addrBefCnt;
dupliCnt = addrNewCnt - resultCnt;
}
}
}
else {
isSuccess = false;
msg = "주소록은 총 50만개까지만 등록이 가능합니다.";
}
}
catch(Exception e) {
isSuccess = false;
msg = "주소록 저장에 오류가 발생하였습니다. 시스템 관리자에게 문의 바랍니다.";
System.out.println("==============================================");
System.out.println("+++++++++++++++++++ addrMassInsertByTempAjax Error ::: "+e.getMessage());
System.out.println("==============================================");
}
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
modelAndView.addObject("resultCnt", resultCnt);
modelAndView.addObject("dupliCnt", dupliCnt);
modelAndView.addObject("errPhoneCnt", errPhoneCnt);
modelAndView.addObject("addrMassDupliList", addrMassDupliList);
return modelAndView;
}
/**
* 주소록 그룹 리스트 화면 불러오기
*
* @param MjonMsgDataVO
* @param
* @param sessionVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value= {"/web/mjon/fax/addr/selectFaxAddrGroupListAjaxView.do"})
public String selectFaxAddrGroupListAjaxView(
@ModelAttribute("searchVO") FaxAddrGroupVO faxaddrGroupVO,
FaxAddrVO faxaddrVO,
ModelMap model,
RedirectAttributes redirectAttributes) throws Exception {
//로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(loginVO == null) {
return "redirect:/web/main/mainPage.do";
}
if(userId != "") {
faxaddrGroupVO.setMberId(userId);
faxaddrVO.setMberId(userId);
}
if(faxaddrGroupVO.getPageUnit() != 10) {
faxaddrGroupVO.setPageUnit(faxaddrGroupVO.getPageUnit());
}
if("".equals(faxaddrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
faxaddrGroupVO.setSearchSortCnd("addrGrpId");
faxaddrGroupVO.setSearchSortOrd("desc");
}
faxaddrGroupVO.setSiteId("web");
List<FaxAddrGroupVO> addrGroupList = faxAddrGroupService.selectFaxAddrGroupList(faxaddrGroupVO);
//회원별 주소록 전체 갯수 조회
int addrTotalCount = faxAddrService.selectFaxAddrTotalCount(faxaddrVO);
faxaddrVO.setType("bookmark");
List<FaxAddrVO> addrBookmarkList = faxAddrService.selectFaxAddrBasicGrpList(faxaddrVO);
faxaddrVO.setType("noGrp");
List<FaxAddrVO> addrNoGrpList = faxAddrService.selectFaxAddrBasicGrpList(faxaddrVO);
model.addAttribute("addrTotalCount", addrTotalCount);
model.addAttribute("addrGroupList", addrGroupList);
model.addAttribute("addrBookmarkList", addrBookmarkList);
model.addAttribute("addrNoGrpList", addrNoGrpList);
return "web/fax/addr/FaxAddrGroupListAjaxView";
}
/**
* 주소록 그룹 목록
* @param searchVO
* @param model
* @return "/web/mjon/addr/addrGroupListAjax.do"
* @throws Exception
*/
@RequestMapping(value= {"/web/mjon/fax/addr/faxAddrGroupListAjax.do"})
public ModelAndView faxAddrGroupListAjax(@ModelAttribute("searchVO") FaxAddrGroupVO addrGroupVO,
RedirectAttributes redirectAttributes,
ModelMap model) throws Exception{
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
boolean isSuccess = true;
String msg = "";
List<FaxAddrGroupVO> addrGroupList = null;
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId != "") {
addrGroupVO.setMberId(userId);
if(addrGroupVO.getPageUnit() != 10) {
addrGroupVO.setPageUnit(addrGroupVO.getPageUnit());
}
if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
addrGroupVO.setSearchSortCnd("grpOrder");
addrGroupVO.setSearchSortOrd("desc");
}
addrGroupVO.setSiteId("web");
addrGroupList = faxAddrGroupService.selectFaxAddrGroupList(addrGroupVO);
}
}
catch(Exception e) {
isSuccess = false;
msg = e.getMessage();
}
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
model.addAttribute("addrGroupList", addrGroupList);
return modelAndView;
}
/**
* 주소록 그룹별 중복 연락처 목록
* @param searchVO
* @param model
* @return "/web/mjon/addr/addrDupliListAjax.do"
* @throws Exception
*/
@RequestMapping(value= {"/web/mjon/fax/addr/faxAddrDupliListAjax.do"})
public ModelAndView faxAddrDupliListAjax(@ModelAttribute("searchVO") FaxAddrVO addrVO,
RedirectAttributes redirectAttributes,
ModelMap model) throws Exception{
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
boolean isSuccess = true;
String msg = "";
List<FaxAddrVO> addrDupliList = null;
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId != "") {
addrVO.setMberId(userId);
// 주소록 그룹별 중복 연락처 목록
addrDupliList = faxAddrService.selectFaxAddrDupliList(addrVO);
}
}
catch(Exception e) {
isSuccess = false;
msg = e.getMessage();
}
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
model.addAttribute("addrDupliList", addrDupliList);
return modelAndView;
}
/**
* 주소록 그룹별 중복 연락처 삭제
* @param searchVO
* @param model
* @return "/web/mjon/addr/deleteAddrDupliList.do"
* @throws Exception
*/
@RequestMapping(value= {"/web/mjon/fax/addr/deleteFaxAddrDupliListAjax.do"})
public ModelAndView deleteFaxAddrDupliListAjax(@ModelAttribute("searchVO") FaxAddrVO addrVO,
RedirectAttributes redirectAttributes,
ModelMap model) throws Exception{
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
boolean isSuccess = true;
String msg = "";
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId != "") {
addrVO.setMberId(userId);
// 주소록 그룹별 중복 연락처 삭제
faxAddrService.deleteFaxAddrDupliList(addrVO);
}
else {
isSuccess = false;
msg = "로그인후 이용하세요.";
}
}
catch(Exception e) {
isSuccess = false;
msg = e.getMessage();
}
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
return modelAndView;
}
/**
* 주소록 그룹별 중복 연락처 삭제
* @param searchVO
* @param model
* @return "/web/mjon/addr/deleteAddrByAllDupliListAjax.do"
* @throws Exception
*/
@RequestMapping(value= {"/web/mjon/fax/addr/deleteFaxAddrByAllDupliListAjax.do"})
public ModelAndView deleteFaxAddrByAllDupliListAjax(@ModelAttribute("searchVO") FaxAddrVO addrVO,
RedirectAttributes redirectAttributes,
ModelMap model) throws Exception{
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
boolean isSuccess = true;
String msg = "";
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId != "") {
addrVO.setMberId(userId);
// 주소록 그룹별 중복 연락처 삭제
faxAddrService.deleteFaxAddrDupliListByAll(addrVO);
}
else {
isSuccess = false;
msg = "로그인후 이용하세요.";
}
}
catch(Exception e) {
isSuccess = false;
msg = e.getMessage();
}
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
return modelAndView;
}
public boolean getNameRepLenChk(String type, String value) {
boolean rtnValue = true;
// JSPark 2023.02.17 : 글자길이체크 주석처리 => 저장시 절삭하기 때문
/*
if(type.equals("name")) {
String tmpNm = value;
int nmLen = tmpNm.length();
if(nmLen > 12) {
rtnValue = false;
}
}else if(type.equals("rep")) {
String tmpRep = value;
int repLen = tmpRep.length();
if(repLen > 20) {
rtnValue = false;
}
}else if(type.equals("memo")) {
String tmpRep = value;
int repLen = tmpRep.length();
if(repLen > 120) {
rtnValue = false;
}
}
*/
return rtnValue;
}
// 문자열에서 숫자만 추출
public String getOnlyNumber(String str) {
//String str = "aaa1234, ^&*2233pp";
String intStr = str.replaceAll("[^\\d]", "");
return intStr;
}
}