위택스 납부자 변경 Controller추가
parent
b33560154d
commit
0414928ba1
@ -0,0 +1,265 @@
|
|||||||
|
package cokr.xit.fims.rent.web;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
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.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
|
||||||
|
import cokr.xit.base.docs.xls.CellDef;
|
||||||
|
import cokr.xit.base.docs.xls.XLSWriter;
|
||||||
|
import cokr.xit.base.web.ApplicationController;
|
||||||
|
import cokr.xit.fims.base.FimsUser;
|
||||||
|
import cokr.xit.fims.cmmn.CmmnUtil;
|
||||||
|
import cokr.xit.fims.cmmn.xls.StyleMaker;
|
||||||
|
import cokr.xit.fims.crdn.CrdnQuery;
|
||||||
|
import cokr.xit.fims.crdn.dao.CrdnListMapper;
|
||||||
|
import cokr.xit.fims.rent.RentQuery;
|
||||||
|
import cokr.xit.fims.rent.dao.LsctMapper;
|
||||||
|
import cokr.xit.fims.rent.dao.UserRentEntMpngMapper;
|
||||||
|
import cokr.xit.foundation.data.DataObject;
|
||||||
|
|
||||||
|
/**위택스 납부자 변경 서비스의 웹 컨트롤러
|
||||||
|
*
|
||||||
|
* <p>상세 설명:
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* ============ 변경 이력 ============
|
||||||
|
* 2024-09-30 leebj 최초 작성
|
||||||
|
* ================================
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@Controller
|
||||||
|
@RequestMapping(name = "위택스 납부자 변경", value=Rent04Controller.CLASS_URL)
|
||||||
|
public class Rent04Controller extends ApplicationController {
|
||||||
|
|
||||||
|
public static final String CLASS_URL = "/rent/rent04";
|
||||||
|
|
||||||
|
public class METHOD_URL {
|
||||||
|
public static final String
|
||||||
|
changeWetaxPayerMain = "/010/main.do", // 위택스 납부자 변경 메인 화면
|
||||||
|
upload = "/010/upload.do",
|
||||||
|
download = "/010/download.do"
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Resource(name = "crdnListMapper")
|
||||||
|
private CrdnListMapper crdnListMapper;
|
||||||
|
|
||||||
|
@Resource(name = "lsctMapper")
|
||||||
|
private LsctMapper lsctMapper;
|
||||||
|
|
||||||
|
@Resource(name = "userRentEntMpngMapper")
|
||||||
|
private UserRentEntMpngMapper userRentEntMpngMapper;
|
||||||
|
|
||||||
|
/**위택스 납부자 변경 메인화면을 연다.
|
||||||
|
* @return /rent/rent04010-main
|
||||||
|
*/
|
||||||
|
@RequestMapping(name = "위택스 납부자 변경 메인", value=METHOD_URL.changeWetaxPayerMain)
|
||||||
|
public ModelAndView changeWetaxPayerMain() {
|
||||||
|
ModelAndView mav = new ModelAndView("fims/rent/rent04010-main");
|
||||||
|
|
||||||
|
// 사용자 정보
|
||||||
|
FimsUser fimsUser = (FimsUser)currentUser().getUser();
|
||||||
|
|
||||||
|
RentQuery req = new RentQuery();
|
||||||
|
req.setUserId(fimsUser.getId());
|
||||||
|
|
||||||
|
|
||||||
|
return mav
|
||||||
|
.addObject("pageName", "rent04010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
|
||||||
|
.addObject("prefixUrl", CLASS_URL) // prefixUrl
|
||||||
|
.addObject("userId", fimsUser.getId()) // 사용자 ID(USER_ID)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping(name = "위택스 납부자 변경 엑셀파일 업로드", value=METHOD_URL.upload)
|
||||||
|
public ModelAndView upload(MultipartFile file) throws InterruptedException, IOException {
|
||||||
|
ModelAndView mav = new ModelAndView("jsonView");
|
||||||
|
|
||||||
|
byte[] bytesOfFile = file.getBytes();
|
||||||
|
InputStream in = new ByteArrayInputStream(bytesOfFile);
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook(in);
|
||||||
|
in.close();
|
||||||
|
|
||||||
|
int rowNo = 0;
|
||||||
|
int cellIndex = 0;
|
||||||
|
|
||||||
|
XSSFSheet sheet = workbook.getSheetAt(0); // 0 번째 시트를 가져온다
|
||||||
|
List<DataObject> result = new ArrayList<DataObject>();
|
||||||
|
|
||||||
|
int rows = sheet.getPhysicalNumberOfRows(); // 사용자가 입력한 엑셀 Row수를 가져온다
|
||||||
|
for(rowNo = 0; rowNo < rows; rowNo++){
|
||||||
|
DataObject resultRow = new DataObject();
|
||||||
|
|
||||||
|
resultRow
|
||||||
|
.set("A", "").set("B", "").set("C", "").set("D", "").set("E", "").set("F", "").set("G", "").set("H", "")
|
||||||
|
.set("I", "").set("J", "").set("K", "").set("L", "").set("M", "").set("N", "").set("O", "").set("P", "");
|
||||||
|
|
||||||
|
XSSFRow row = sheet.getRow(rowNo);
|
||||||
|
|
||||||
|
if(row != null){
|
||||||
|
int cells = 9;
|
||||||
|
for(cellIndex = 0; cellIndex <= cells; cellIndex++){
|
||||||
|
|
||||||
|
XSSFCell cell = row.getCell(cellIndex); // 셀의 값을 가져온다
|
||||||
|
String value = "";
|
||||||
|
if(cell == null){ // 빈 셀 체크
|
||||||
|
value = "";
|
||||||
|
}else{
|
||||||
|
// 타입 별로 내용을 읽는다
|
||||||
|
switch (cell.getCellType()){
|
||||||
|
case FORMULA:
|
||||||
|
value = cell.getCellFormula();
|
||||||
|
break;
|
||||||
|
case NUMERIC:
|
||||||
|
if(cellIndex == 6) {
|
||||||
|
value = new SimpleDateFormat("yyyy-MM-dd").format(cell.getDateCellValue());
|
||||||
|
} else {
|
||||||
|
value = ""+(int)cell.getNumericCellValue() + "";
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case STRING:
|
||||||
|
value = cell.getStringCellValue() + "";
|
||||||
|
break;
|
||||||
|
case BLANK:
|
||||||
|
value = "";
|
||||||
|
break;
|
||||||
|
case ERROR:
|
||||||
|
value = cell.getErrorCellValue() + "";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rowNo != 0) {
|
||||||
|
resultRow.put(CmmnUtil.indexToAlphabet(cellIndex, true, true), value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rowNo != 0) {
|
||||||
|
List<DataObject> searchResult = null;
|
||||||
|
|
||||||
|
RentQuery entQuery = new RentQuery();
|
||||||
|
entQuery.setUserId(currentUser().getId());
|
||||||
|
List<DataObject> entList = userRentEntMpngMapper.selectUserRentEntMpngList(entQuery);
|
||||||
|
//사용자 기업ID 목록
|
||||||
|
String[] entIds = entList.stream().map(i -> i.string("ENT_ID")).toList().toArray(new String[entList.size()]);
|
||||||
|
//사용자 기업등록번호 목록
|
||||||
|
List<String> entRegNos = entList.stream().map(i -> i.string("ENT_REG_NO")).toList();
|
||||||
|
//사용자 기업명 목록
|
||||||
|
List<String> entNms = entList.stream().map(i -> i.string("ENT_NM")).toList();
|
||||||
|
|
||||||
|
RentQuery lsctQuery = new RentQuery();
|
||||||
|
lsctQuery.setEntIds(entIds);
|
||||||
|
lsctQuery.setSchVhrno(resultRow.string("D"));
|
||||||
|
lsctQuery.setSchCtrtYmd(resultRow.string("G"));
|
||||||
|
//rentQuery.set시간(resultRow.string("G"));
|
||||||
|
searchResult = lsctMapper.selectLsctList(lsctQuery);
|
||||||
|
|
||||||
|
if(searchResult != null && !searchResult.isEmpty()) {
|
||||||
|
DataObject searchResult1 = searchResult.get(0);
|
||||||
|
|
||||||
|
resultRow.set("K", searchResult1.string("HIRER_NM"));
|
||||||
|
if(searchResult1.string("HIRER_SE_CD").equals("99")) {
|
||||||
|
resultRow.set("L", searchResult1.string("HIRER_REG_NO"));
|
||||||
|
} else {
|
||||||
|
resultRow.set("M", searchResult1.string("HIRER_REG_NO"));
|
||||||
|
}
|
||||||
|
resultRow.set("N", searchResult1.string("HIRER_ADDR"));
|
||||||
|
resultRow.set("O", searchResult1.string("HIRER_DTL_ADDR"));
|
||||||
|
resultRow.set("P", searchResult1.string("HIRER_ZIP"));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
CrdnQuery crdnQuery = new CrdnQuery();
|
||||||
|
crdnQuery.setVhrno(resultRow.string("D"));
|
||||||
|
crdnQuery.setSchCrdnYmdFrom(resultRow.string("G"));
|
||||||
|
crdnQuery.setSchCrdnYmdTo(resultRow.string("G"));
|
||||||
|
//crdnQuery.set시간(resultRow.string("G"));
|
||||||
|
searchResult = crdnListMapper.selectCrackdownList(crdnQuery);
|
||||||
|
|
||||||
|
if(searchResult != null && !searchResult.isEmpty()) {
|
||||||
|
DataObject searchResult1 = searchResult.get(0);
|
||||||
|
|
||||||
|
//납부자정보가 사용자기업정보가 아니면
|
||||||
|
if(!entNms.contains(searchResult1.string("RTPYR_NM"))
|
||||||
|
&& !entRegNos.contains(searchResult1.string("RTPYR_NO"))
|
||||||
|
) {
|
||||||
|
resultRow.set("K", searchResult1.string("RTPYR_NM"));
|
||||||
|
if(searchResult1.string("RTPYR_SE_CD").equals("99")) {
|
||||||
|
resultRow.set("L", searchResult1.string("RTPYR_NO"));
|
||||||
|
} else {
|
||||||
|
resultRow.set("M", searchResult1.string("RTPYR_NO"));
|
||||||
|
}
|
||||||
|
resultRow.set("N", searchResult1.string("RTPYR_ADDR"));
|
||||||
|
resultRow.set("O", searchResult1.string("RTPYR_DTL_ADDR"));
|
||||||
|
resultRow.set("P", searchResult1.string("RTPYR_ZIP"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
result.add(resultRow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
workbook.close();
|
||||||
|
|
||||||
|
mav.addObject("data", result);
|
||||||
|
mav.addObject("saved", true);
|
||||||
|
return mav;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping(name = "위택스 납부자 변경 엑셀파일 다운로드", value=METHOD_URL.download)
|
||||||
|
public ModelAndView download(RentQuery query) {
|
||||||
|
|
||||||
|
ModelAndView mav = new ModelAndView("downloadView");
|
||||||
|
XLSWriter xlsx = new XLSWriter().worksheet(0);
|
||||||
|
|
||||||
|
List<CellDef> cellDefs = new ArrayList<CellDef>();
|
||||||
|
cellDefs.add(new CellDef().setField("A").setLabel("관리번호"));
|
||||||
|
cellDefs.add(new CellDef().setField("B").setLabel("전자납부번호"));
|
||||||
|
cellDefs.add(new CellDef().setField("C").setLabel("관할자치단체"));
|
||||||
|
cellDefs.add(new CellDef().setField("D").setLabel("부과대상"));
|
||||||
|
cellDefs.add(new CellDef().setField("E").setLabel("위반장소"));
|
||||||
|
cellDefs.add(new CellDef().setField("F").setLabel("위반내용"));
|
||||||
|
cellDefs.add(new CellDef().setField("G").setLabel("등록(위반)일시"));
|
||||||
|
cellDefs.add(new CellDef().setField("H").setLabel("과태료부과금액"));
|
||||||
|
cellDefs.add(new CellDef().setField("I").setLabel("의견제출시작일"));
|
||||||
|
cellDefs.add(new CellDef().setField("J").setLabel("의견제출종료일"));
|
||||||
|
cellDefs.add(new CellDef().setField("K").setLabel("변경자 성명/법인명"));
|
||||||
|
cellDefs.add(new CellDef().setField("L").setLabel("변경자 운전면허번호"));
|
||||||
|
cellDefs.add(new CellDef().setField("M").setLabel("변경자 주민/법인번호"));
|
||||||
|
cellDefs.add(new CellDef().setField("N").setLabel("변경자 주소"));
|
||||||
|
cellDefs.add(new CellDef().setField("O").setLabel("변경자 상세주소"));
|
||||||
|
cellDefs.add(new CellDef().setField("P").setLabel("변경자 우편번호"));
|
||||||
|
|
||||||
|
List<DataObject> list = fromJson(query.getCellDataDef(), new TypeReference<List<DataObject>>(){});
|
||||||
|
|
||||||
|
xlsx.cell(0, 0).rowValues(CellDef.header(cellDefs, () -> StyleMaker.headerStyle(xlsx)));
|
||||||
|
xlsx.cell(1, 0).values(list, CellDef.values(cellDefs));
|
||||||
|
|
||||||
|
|
||||||
|
mav.addObject("download", xlsx.getDownloadable().setFilename("위택스 법인과태료대상목록(결과).xlsx"));
|
||||||
|
|
||||||
|
return mav;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue