File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package itn.let.mjo.tax.web;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.beans.factory.annotation.Value;
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.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.ComDefaultCodeVO;
import itn.com.cmm.EgovMessageSource;
import itn.com.cmm.LoginVO;
import itn.com.cmm.service.EgovCmmUseService;
import itn.com.cmm.service.EgovFileMngService;
import itn.com.cmm.service.EgovFileMngUtil;
import itn.com.cmm.service.FileVO;
import itn.com.cmm.util.RedirectUrlMaker;
import itn.com.utl.fcc.service.EgovStringUtil;
import itn.let.mjo.tax.service.TaxService;
import itn.let.mjo.tax.service.TaxVO;
import itn.let.utl.fcc.service.EgovCryptoUtil;
@Controller
public class TaxController {
@Resource(name="taxService")
private TaxService taxService;
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
@Resource(name = "EgovCmmUseService")
private EgovCmmUseService cmmUseService;
@Resource(name="EgovFileMngUtil")
private EgovFileMngUtil fileUtil;
@Resource(name="EgovFileMngService")
private EgovFileMngService fileMngService;
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
/** 사업자번호 */
@Value("#{globalSettings['Globals.Business.number']}")
private String businessNumber;
/** 나이스페이 아이디 */
@Value("#{globalSettings['Globals.Nicepay.Id']}")
private String nicepayId;
@Resource(name="egovMessageSource")
EgovMessageSource egovMessageSource;
//세금계산서 목록 조회
@RequestMapping("/let/mjo/tax/selectTaxReceiptList.do")
public String selectTaxReceiptList(@ModelAttribute("searchVO") TaxVO taxVO, ModelMap model) throws Exception{
// 결제방식 코드조회
ComDefaultCodeVO voComCode = new ComDefaultCodeVO();
voComCode.setCodeId("ITN036");
model.addAttribute("payCode", cmmUseService.selectCmmCodeDetail(voComCode));
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(taxVO.getPageIndex());
paginationInfo.setRecordCountPerPage(taxVO.getPageUnit());
paginationInfo.setPageSize(taxVO.getPageSize());
taxVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
taxVO.setLastIndex(paginationInfo.getLastRecordIndex());
taxVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
//세금계산서 타입 9
taxVO.setSearchRcptType("9");
if("".equals(taxVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
taxVO.setSearchSortCnd("sortfrstRegistPnttm");
taxVO.setSearchSortOrd("desc");
}
//최초 조회 시 접수 처리 미완료만 조회
if("".equals(taxVO.getSearchConfirmYn())) {
//taxVO.setSearchConfirmYn("N");
}
if("all".equals(taxVO.getSearchConfirmYn())) {
taxVO.setSearchConfirmYn("");
}
List<TaxVO> resultList = taxService.selectTaxList(taxVO);
model.addAttribute("resultList", resultList);
int totCnt = 0;
if(resultList.size() > 0) totCnt = resultList.get(0).getTotCnt();
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("paginationInfo", paginationInfo);
model.addAttribute("taxVO", taxVO);
return "uss/ion/tax/taxReceiptList";
}
//세금계산서, 현금영수증 상세 조회
@RequestMapping(value= {"/let/mjo/tax/selectTaxReceiptDetail.do","/let/mjo/tax/selectCashReceiptDetail.do"})
public String selectTaxReceiptDetail(@ModelAttribute("searchVO") TaxVO taxVO, HttpServletRequest request, ModelMap model) throws Exception{
TaxVO result = taxService.selectTaxInfo(taxVO);
model.addAttribute("result", result);
String returnUrl = "";
if(request.getServletPath().equals("/let/mjo/tax/selectTaxReceiptDetail.do")) {
returnUrl = "uss/ion/tax/taxReceiptDetail";
} else if (request.getServletPath().equals("/let/mjo/tax/selectCashReceiptDetail.do")) {
returnUrl = "uss/ion/tax/cashReceiptDetail";
}
return returnUrl;
}
//간이영수증 목록 조회
@RequestMapping("/let/mjo/tax/selectSimpReceiptList.do")
public String selectSimpReceiptList(@ModelAttribute("searchVO") TaxVO taxVO, ModelMap model) throws Exception{
// 결제방식 코드조회
ComDefaultCodeVO voComCode = new ComDefaultCodeVO();
voComCode.setCodeId("ITN036");
model.addAttribute("payCode", cmmUseService.selectCmmCodeDetail(voComCode));
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(taxVO.getPageIndex());
paginationInfo.setRecordCountPerPage(taxVO.getPageUnit());
paginationInfo.setPageSize(taxVO.getPageSize());
taxVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
taxVO.setLastIndex(paginationInfo.getLastRecordIndex());
taxVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
//간이영수증 타입 : 0
taxVO.setSearchRcptType("0");
if("".equals(taxVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
taxVO.setSearchSortCnd("sortfrstRegistPnttm");
taxVO.setSearchSortOrd("desc");
}
List<TaxVO> resultList = taxService.selectTaxList(taxVO);
model.addAttribute("resultList", resultList);
int totCnt = 0;
if(resultList.size() > 0) totCnt = resultList.get(0).getTotCnt();
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("paginationInfo", paginationInfo);
model.addAttribute("taxVO", taxVO);
return "uss/ion/tax/simpReceiptList";
}
//현금영수증 목록 조회
@RequestMapping("/let/mjo/tax/selectCashReceiptList.do")
public String selectCashReceiptList(@ModelAttribute("searchVO") TaxVO taxVO, ModelMap model) throws Exception{
// 결제방식 코드조회
ComDefaultCodeVO voComCode = new ComDefaultCodeVO();
voComCode.setCodeId("ITN036");
model.addAttribute("payCode", cmmUseService.selectCmmCodeDetail(voComCode));
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(taxVO.getPageIndex());
paginationInfo.setRecordCountPerPage(taxVO.getPageUnit());
paginationInfo.setPageSize(taxVO.getPageSize());
taxVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
taxVO.setLastIndex(paginationInfo.getLastRecordIndex());
taxVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
//현금영수증 타입 1,2
taxVO.setRcptTypes(new String[]{"1","2","3","5"});
if("".equals(taxVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
taxVO.setSearchSortCnd("sortfrstRegistPnttm");
taxVO.setSearchSortOrd("desc");
}
//최초 조회 시 접수 처리 미완료만 조회
if("".equals(taxVO.getSearchConfirmYn())) {
taxVO.setSearchConfirmYn("N");
}
if("all".equals(taxVO.getSearchConfirmYn())) {
taxVO.setSearchConfirmYn("");
}
//현금영수증 조회쇠 - 쿼리스트링으로 배열을 넘겨준 후 where절에 in 처리
if(taxVO.getRcptTypes() != null) {
taxVO.setRcptTypesStr(String.join(",",taxVO.getRcptTypes()));
}
List<TaxVO> resultList = taxService.selectTaxList(taxVO);
model.addAttribute("resultList", resultList);
int totCnt = 0;
if(resultList.size() > 0) totCnt = resultList.get(0).getTotCnt();
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("paginationInfo", paginationInfo);
model.addAttribute("taxVO", taxVO);
return "uss/ion/tax/cashReceiptList";
}
//세금계산서 접수 처리
@RequestMapping(value = {"/let/mjo/tax/updateReceiptTax.do"
, "/let/mjo/tax/updateReceiptCash.do"
, "/let/mjo/tax/updatePartialCancelTax.do"
, "/let/mjo/tax/updatePartialCancelCash.do"})
public String updateReceiptTax(TaxVO taxVO, HttpServletRequest request, RedirectAttributes redirectAttributes, String[] checkField) throws Exception{
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
taxVO.setLastUpdusrId(userId);
try {
taxService.updateTax(taxVO);
redirectAttributes.addFlashAttribute("message", "접수처리 완료하였습니다.");
}catch(Exception e){
redirectAttributes.addFlashAttribute("message", "접수처리 실패하였습니다.");
}
String redirectUrl = "";
if(request.getServletPath().equals("/let/mjo/tax/updateReceiptTax.do") || request.getServletPath().equals("/let/mjo/tax/updatePartialCancelTax.do")) { //세금계산서
redirectUrl = "/let/mjo/tax/selectTaxReceiptList.do";
} else if(request.getServletPath().equals("/let/mjo/tax/updateReceiptCash.do") || request.getServletPath().equals("/let/mjo/tax/updatePartialCancelCash.do")) { //현금영수증
redirectUrl = "/let/mjo/tax/selectCashReceiptList.do";
}
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker(redirectUrl);
redirectAttributes.addAttribute("rcptType", taxVO.getRcptType());
redirectAttributes.addAttribute("rcptTypesStr", taxVO.getRcptTypesStr());
return redirectUrlMaker.getRedirectUrl();
}
//세금계산서, 현금영수증 발행 - 사용자 결제내역 화면
@RequestMapping("/web/let/mjo/tax/insertTaxBill.do")
public String insertCashBill(TaxVO taxVO, RedirectAttributes redirectAttributes) throws Exception{
//주민등록번호 암호화 - 개인회원 세금계산서(후보자)
if("p".equals(taxVO.getDept()) && "9".equals(taxVO.getRcptType()) && "C".equals(taxVO.getTaxTrgt())) {
taxVO.setRegNo(egovCryptoUtil.encrypt(taxVO.getRegNo()));
}
taxService.insertCashBill(taxVO);
redirectAttributes.addFlashAttribute("message", "발행신청 완료하였습니다.");
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/web/member/pay/PayList.do");
return redirectUrlMaker.getRedirectUrl();
}
//세금계산서, 현금영수증 발행 - 관리자 결제리스트 화면
@RequestMapping("/let/mjo/tax/insertTaxBillAdm.do")
public String insertTaxBillAdm(TaxVO taxVO, RedirectAttributes redirectAttributes) throws Exception{
//주민등록번호 암호화 - 개인회원 세금계산서(후보자)
if("p".equals(taxVO.getDept()) && "9".equals(taxVO.getRcptType()) && "C".equals(taxVO.getTaxTrgt())) {
taxVO.setRegNo(egovCryptoUtil.encrypt(taxVO.getRegNo()));
}
taxVO.setConfirmYn("N");
taxService.insertCashBill(taxVO);
redirectAttributes.addFlashAttribute("message", "발행신청 완료하였습니다.");
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/pay/PayList.do");
return redirectUrlMaker.getRedirectUrl();
}
// 세금계산서, 현금영수증 발행 - 관리자 결제리스트 화면 Ajax => Multi
@RequestMapping("/uss/umt/user/insertTaxBillAdmMultiAjax.do")
public ModelAndView insertTaxBillAdmMultiAjax(HttpServletRequest request
, @RequestParam(value="moidList[]") List<String> moidList
, @RequestParam(value="userList[]") List<String> userList
, @RequestParam(value="regNo") String regNo
, @RequestParam(value="rcptType") String rcptType
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
boolean isSuccess = true;
String msg = "";
try {
if (moidList.size() == userList.size()) {
for (int i = 0; i < moidList.size(); i++) {
TaxVO taxVO = new TaxVO();
taxVO.setRegNo(regNo);
taxVO.setRcptType(rcptType);
taxVO.setConfirmYn("N");
taxVO.setMoid(moidList.get(i));
taxVO.setFrstRegisterId(userList.get(i));
taxService.insertCashBill(taxVO);
}
}
else {
isSuccess = false;
msg = "현금영수증 신청중 오류가 발생했습니다.";
}
}
catch(Exception e) {
isSuccess = false;
msg = e.getMessage();
}
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
return modelAndView;
}
/* 서류 삭제 */
@RequestMapping(value = {"/let/mjo/tax/deleteTaxReceipt.do", "/let/mjo/tax/deleteCashReceipt.do", "/let/mjo/tax/deleteSimpReceipt.do"})
public String deleteReceiptTax(TaxVO taxVO,
RedirectAttributes redirectAttributes, HttpServletRequest request,
Model model) throws Exception {
// 미인증 사용자에 대한 보안처리
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
if(!isAuthenticated) {
model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
return "uat/uia/EgovLoginUsr";
}
try {
taxService.deleteReceipts(taxVO);
redirectAttributes.addFlashAttribute("message", "삭제 완료하였습니다.");
}catch(Exception e){
redirectAttributes.addFlashAttribute("message", "삭제 실패하였습니다.");
}
String redirectUrl = "";
if(request.getServletPath().equals("/let/mjo/tax/deleteTaxReceipt.do")) { //세금계산서
redirectUrl = "/let/mjo/tax/selectTaxReceiptList.do";
} else if(request.getServletPath().equals("/let/mjo/tax/deleteCashReceipt.do")) { //현금영수증
redirectUrl = "/let/mjo/tax/selectCashReceiptList.do";
} else if(request.getServletPath().equals("/let/mjo/tax/deleteSimpReceipt.do")) { //간이영수증
redirectUrl = "/let/mjo/tax/selectSimpReceiptList.do";
}
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker(redirectUrl);
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete"));
return redirectUrlMaker.getRedirectUrl();
}
//배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"}
//세금계산서 엑셀 다운로드
@RequestMapping(value="/let/mjo/tax/taxExcelDownload.do")
public void userExcelDownload(TaxVO taxVO,
HttpServletRequest request,
HttpServletResponse response ,
ModelMap model) throws Exception {
taxVO.setRecordCountPerPage(100000);
taxVO.setFirstIndex(0);
taxVO.setDownloadType("taxExcel");
List<TaxVO> taxList = taxService.selectTaxList(taxVO);
// 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다.
SXSSFWorkbook wb = new SXSSFWorkbook(100);
String qestnrSj = "세금계산서 신청 목록" ; //제목
Sheet sheet = wb.createSheet(qestnrSj);
Cell cell = null;
Row row = null;
String fileName ="세금계산서 신청 목록";
//현재 일시 구하기
SimpleDateFormat dateForm = new SimpleDateFormat("yyyyMMdd");
Calendar today = Calendar.getInstance();
String now = dateForm.format(today.getTime());
try {
row = sheet.createRow(6);
cell = row.createCell(0);
cell.setCellValue("전자(세금)계산서 종류(01일반, 02:영세율)");
cell = row.createCell(1);
cell.setCellValue("작성일자");
cell = row.createCell(2);
cell.setCellValue("공급자 등록번호('-'없이 입력)");
cell = row.createCell(3);
cell.setCellValue("공급자 종사업장번호");
cell = row.createCell(4);
cell.setCellValue("공급자 상호");
cell = row.createCell(5);
cell.setCellValue("공급자 성명");
cell = row.createCell(6);
cell.setCellValue("공급자 사업장주소");
cell = row.createCell(7);
cell.setCellValue("공급자 업태");
cell = row.createCell(8);
cell.setCellValue("공급자 종목");
cell = row.createCell(9);
cell.setCellValue("공급자 이메일");
cell = row.createCell(10);
cell.setCellValue("공급받는자 등록번호('-' 없이 입력)");
cell = row.createCell(11);
cell.setCellValue("공급받는자 종사업장번호");
cell = row.createCell(12);
cell.setCellValue("공급받는자 상호");
cell = row.createCell(13);
cell.setCellValue("공급받는자 성명");
cell = row.createCell(14);
cell.setCellValue("공급받는자 사업장주소");
cell = row.createCell(15);
cell.setCellValue("공급받는자 업태");
cell = row.createCell(16);
cell.setCellValue("공급받는자 종목");
cell = row.createCell(17);
cell.setCellValue("공급받는자 이메일1");
cell = row.createCell(18);
cell.setCellValue("공급받는자 이메일2");
cell = row.createCell(19);
cell.setCellValue("공급가액");
cell = row.createCell(20);
cell.setCellValue("세액");
cell = row.createCell(21);
cell.setCellValue("비고");
cell = row.createCell(22);
cell.setCellValue("일자1(2자리, 작성년월 제외)");
cell = row.createCell(23);
cell.setCellValue("품목1");
cell = row.createCell(24);
cell.setCellValue("규격1");
cell = row.createCell(25);
cell.setCellValue("수량1");
cell = row.createCell(26);
cell.setCellValue("단가1");
cell = row.createCell(27);
cell.setCellValue("공급가액1");
cell = row.createCell(28);
cell.setCellValue("세액1");
cell = row.createCell(29);
cell.setCellValue("품목비고1");
cell = row.createCell(30);
cell.setCellValue("일자2(2자리, 작성년월 제외)");
cell = row.createCell(31);
cell.setCellValue("품목2");
cell = row.createCell(32);
cell.setCellValue("규격2");
cell = row.createCell(33);
cell.setCellValue("수량2");
cell = row.createCell(34);
cell.setCellValue("단가2");
cell = row.createCell(35);
cell.setCellValue("공급가액2");
cell = row.createCell(36);
cell.setCellValue("세액2");
cell = row.createCell(37);
cell.setCellValue("품목비고2");
cell = row.createCell(38);
cell.setCellValue("일자3(2자리, 작성년월 제외)");
cell = row.createCell(39);
cell.setCellValue("품목3");
cell = row.createCell(40);
cell.setCellValue("규격3");
cell = row.createCell(41);
cell.setCellValue("수량3");
cell = row.createCell(42);
cell.setCellValue("단가3");
cell = row.createCell(43);
cell.setCellValue("공급가액3");
cell = row.createCell(44);
cell.setCellValue("세액3");
cell = row.createCell(45);
cell.setCellValue("품목비고3");
cell = row.createCell(46);
cell.setCellValue("일자4(2자리, 작성년월 제외)");
cell = row.createCell(47);
cell.setCellValue("품목4");
cell = row.createCell(48);
cell.setCellValue("규격4");
cell = row.createCell(49);
cell.setCellValue("수량4");
cell = row.createCell(50);
cell.setCellValue("단가4");
cell = row.createCell(51);
cell.setCellValue("공급가액4");
cell = row.createCell(52);
cell.setCellValue("세액4");
cell = row.createCell(53);
cell.setCellValue("품목비고4");
cell = row.createCell(54);
cell.setCellValue("현금");
cell = row.createCell(55);
cell.setCellValue("수표");
cell = row.createCell(56);
cell.setCellValue("어음");
cell = row.createCell(57);
cell.setCellValue("외상미수금");
cell = row.createCell(58);
cell.setCellValue("영수(01),청구(02)");
for(int i=0; i < taxList.size(); i++) {
row = sheet.createRow(7+i);
cell = row.createCell(0);
cell.setCellValue("01");
cell = row.createCell(1);
cell.setCellValue(now);
cell = row.createCell(2);
cell.setCellValue("6538700858");
cell = row.createCell(4);
cell.setCellValue("문자온");
cell = row.createCell(5);
cell.setCellValue("유인식");
cell = row.createCell(6);
cell.setCellValue("(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)");
cell = row.createCell(7);
cell.setCellValue("서비스업");
cell = row.createCell(8);
cell.setCellValue("소프트웨어 개발, 자문 및 공급");
cell = row.createCell(9);
cell.setCellValue("tax@iten.co.kr");
cell = row.createCell(10);
if(taxList.get(i).getRegNo() != null) {
if(taxList.get(i).getRegNo().length() == 10) { //사업자등록번호
cell.setCellValue(taxList.get(i).getRegNo()); //공급받는자 등록번호
}else { //주민등록번호 - 복호화
cell.setCellValue(egovCryptoUtil.decrypt(taxList.get(i).getRegNo())); //공급받는자 등록번호
}
}else {
cell.setCellValue("공급번호");
}
cell = row.createCell(12);
cell.setCellValue(taxList.get(i).getCompanyName());
cell = row.createCell(13);
cell.setCellValue(taxList.get(i).getRepName());
cell = row.createCell(14);
cell.setCellValue(taxList.get(i).getAddr());
cell = row.createCell(15);
cell.setCellValue(taxList.get(i).getBtype());
cell = row.createCell(16);
cell.setCellValue(taxList.get(i).getBitem());
cell = row.createCell(17);
cell.setCellValue(taxList.get(i).getEmail());
int cash = Integer.parseInt( taxList.get(i).getCash());
int VAT = (int)Math.round((((cash/1.1)*0.1)));//세액
int price = cash - VAT;//공급가액
cell = row.createCell(19);
cell.setCellValue(price);//공급가액
cell = row.createCell(20);
cell.setCellValue(VAT);//세액
cell = row.createCell(22);
cell.setCellValue(now.substring(now.length()-2, now.length()));
cell = row.createCell(23);
cell.setCellValue("문자온-이용료");
cell = row.createCell(27);
cell.setCellValue(price);
cell = row.createCell(28);
cell.setCellValue(VAT);
cell = row.createCell(58);
cell.setCellValue("01");
}
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) {}
}
}
@RequestMapping(value = "/let/mjo/tax/taxTextDownload.do")
public void taxTextDownload(
HttpServletResponse response
, HttpServletRequest request) throws Exception {
try {
LocalDate now = LocalDate.now(); // 현재 날짜 구하기
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); // 포맷 설정
String formatedNow = now.format(formatter); // 포맷 적용
String dFile = nicepayId+"_"+formatedNow+"_001.txt";
File file = new File(dFile);
String userAgent = request.getHeader("User-Agent");
boolean ie = userAgent.indexOf("MSIE") > -1 || userAgent.indexOf("rv:11") > -1;
String fileName = null;
if (ie) {
fileName = URLEncoder.encode(file.getName(), "utf-8");
} else {
fileName = new String(file.getName().getBytes("iso-8859-1"),"utf-8");
}
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment;filename=\"" +fileName+"\";");
BufferedOutputStream out=new BufferedOutputStream(response.getOutputStream());
TaxVO taxVO = new TaxVO();
//접수처리 미완료만 조회
taxVO.setConfirmYn("N");
taxVO.setSearchConfirmYn("N");
taxVO.setRecordCountPerPage(100000);
taxVO.setFirstIndex(0);
//현금영수증 조회쇠 - 쿼리스트링으로 배열을 넘겨준 후 where절에 in 처리
if(taxVO.getRcptTypes() != null) {
taxVO.setRcptTypesStr(String.join(",",taxVO.getRcptTypes()));
}
taxVO.setDownloadType("cashTxt");
List<TaxVO> resultList = taxService.selectTaxList(taxVO);
String downInfo = "";
for(int i=0; i < resultList.size(); i++) {
resultList.get(i).getCash(); // 발행금액, 공급가액
resultList.get(i).getRepName(); // 구매자명
resultList.get(i).getEmail(); // 구매자 이메일 주소
resultList.get(i).getPhone(); // 구매자 전화번호
resultList.get(i).getRegNo(); // 발행번호(사업자번호, 휴대폰번호)
resultList.get(i).getRcptType(); // 용도(1:소득공제용, 2:휴대폰 번호)
if(i != 0) {
downInfo += "\n";
}
downInfo += businessNumber+",충전하기,"+resultList.get(i).getCash()+","+resultList.get(i).getCash()+",0,0,0,"+resultList.get(i).getRepName()+","+resultList.get(i).getEmail()+","+resultList.get(i).getPhone()+","+resultList.get(i).getRegNo()+","+resultList.get(i).getRcptType();
}
try {
out.write(downInfo.getBytes());
out.flush();
} finally {
if(out!=null) out.close();
}
} catch (Exception e) {
}
}
@RequestMapping("/let/mjo/tax/taxReceiptFileUpload.do")
public String taxReceiptFileUpload(
@ModelAttribute("searchVO") TaxVO taxVO
, Model model) throws Exception {
TaxVO info = taxService.selectTaxInfo(taxVO);
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(info.getAtchFileId());
List<FileVO> fileList = fileService.selectFileInfs(fileVO);
model.addAttribute("fileList", fileList);
model.addAttribute("info", info);
return "/uss/ion/tax/TaxFileUpload";
}
@RequestMapping("/let/mjo/tax/updateTaxReceiptFileAjax.do")
public ModelAndView updateTaxReceiptFileAjax(
final MultipartHttpServletRequest multiRequest,
TaxVO taxVO
)throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String orignlFileNm = "";
String atchFileId = taxVO.getAtchFileId();
final Map<String, MultipartFile> files = multiRequest.getFileMap();
if(!files.isEmpty()) {
if ("".equals(atchFileId)) {
List<FileVO> result = fileUtil.parseFileInf(files, "TAX_", 0, atchFileId, "", "");
atchFileId = fileMngService.insertFileInfs(result);
taxVO.setAtchFileId(atchFileId);
}else {
FileVO fvo = new FileVO();
fvo.setAtchFileId(atchFileId);
int cnt = fileMngService.getMaxFileSN(fvo);
List<FileVO> result = fileUtil.parseFileInf(files, "TAX_", cnt, atchFileId, "", "");
fileMngService.updateFileInfs(result);
}
}
taxService.updateTaxReceiptFile(taxVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
}