검찰연계 엑셀업로드 기능 추가
This commit is contained in:
parent
c31f9eff61
commit
428796741e
@ -8,6 +8,10 @@ import java.util.Locale;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
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.openxml4j.opc.OPCPackage;
|
||||||
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.Cell;
|
||||||
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
||||||
@ -269,56 +273,45 @@ public class AdrPrsctLinkController {
|
|||||||
|
|
||||||
int errItemCnt = 0;
|
int errItemCnt = 0;
|
||||||
String errItemLine = "";
|
String errItemLine = "";
|
||||||
|
List<HashMap<String, String>> hashMapList = new ArrayList<HashMap<String, String>>();
|
||||||
|
|
||||||
//엑셀 확장자에 따른 처리 로직 분리
|
//엑셀 확장자에 따른 처리 로직 분리
|
||||||
//확장자가 xlsx
|
if(Ext.equals("xls")) {
|
||||||
if(Ext.equals("xlsx")) {
|
HSSFWorkbook workbook = new HSSFWorkbook(files.get(0).getInputStream());
|
||||||
OPCPackage opcPackage = OPCPackage.open(files.get(0).getInputStream());
|
HSSFSheet sheet = workbook.getSheetAt(0);
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);
|
|
||||||
XSSFSheet sheet = workbook.getSheetAt(0); // 첫번째 시트 불러오기
|
if(sheet.getLastRowNum() > 20001) { //
|
||||||
opcPackage.close();
|
|
||||||
|
|
||||||
int totRowDataCnt = 0;
|
|
||||||
for(int r=1; r<sheet.getPhysicalNumberOfRows(); r++) {
|
|
||||||
XSSFRow tmpRow = sheet.getRow(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("")) {
|
|
||||||
totRowDataCnt++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(totRowDataCnt > 20001) {
|
|
||||||
errMessage = "20000건 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.";
|
errMessage = "20000건 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.";
|
||||||
jr.setSuccess(false);
|
jr.setSuccess(false);
|
||||||
jr.setMessage(errMessage);
|
jr.setMessage(errMessage);
|
||||||
return jr;
|
return jr;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<HashMap<String, String>> hashMapList = new ArrayList<HashMap<String, String>>();
|
|
||||||
for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
|
for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
|
||||||
XSSFRow row = sheet.getRow(i); //열읽기
|
HSSFRow row = sheet.getRow(i); //열읽기
|
||||||
if(null == row) {
|
if(null == row) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
HashMap<String, String> hashMap = new HashMap<>();
|
HashMap<String, String> hashMap = new HashMap<>();
|
||||||
// 행의 두번째 열(이름부터 받아오기)
|
// 행의 두번째 열(이름부터 받아오기)
|
||||||
XSSFCell cell = null;
|
HSSFCell cell = null;
|
||||||
boolean errSts = true;
|
boolean errSts = true;
|
||||||
|
for(int j = 0 ; j < 6; j++){ //행읽기(6행까지나 2행까지만 필요)
|
||||||
for(int j = 0 ; j <= 7; j++){ //행읽기(6행까지나 2행까지만 필요)
|
|
||||||
cellValue = "";
|
cellValue = "";
|
||||||
cell = row.getCell(j); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5
|
cell = row.getCell(j); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5
|
||||||
if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
|
if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
|
||||||
|
//System.out.println("Cell 데이터가 없습니다.");
|
||||||
if(j == 1) {
|
if(j == 1) {
|
||||||
if (sheet.getLastRowNum() == i) {
|
if (sheet.getLastRowNum() == i) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//errPhoneCnt++;
|
||||||
|
//errSts = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if(null != cell){
|
if(null != cell){
|
||||||
switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
||||||
@ -327,8 +320,8 @@ public class AdrPrsctLinkController {
|
|||||||
}
|
}
|
||||||
cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ;
|
cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 항목 체크
|
// 항목 체크 Start
|
||||||
if(j == 0) {
|
if(j == 0) {
|
||||||
//배당일
|
//배당일
|
||||||
if(getItemChk("dividendDate", cellValue) && errSts) {
|
if(getItemChk("dividendDate", cellValue) && errSts) {
|
||||||
@ -416,7 +409,165 @@ public class AdrPrsctLinkController {
|
|||||||
errSts = false;
|
errSts = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 항목 체크 End
|
||||||
|
}
|
||||||
|
|
||||||
|
if(errSts) {
|
||||||
|
hashMapList.add(hashMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//jr.setData(hashMapList);
|
||||||
|
jr.setSuccess(true);
|
||||||
|
}
|
||||||
|
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);
|
||||||
|
XSSFCell cell = null;
|
||||||
|
if(tmpRow.getCell(1) != null) {
|
||||||
|
cell = tmpRow.getCell(1); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5
|
||||||
|
if(cell != null && !cell.toString().trim().equals("")) {
|
||||||
|
totRowDataCnt++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(totRowDataCnt > 20001) {
|
||||||
|
errMessage = "20000건 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.";
|
||||||
|
jr.setSuccess(false);
|
||||||
|
jr.setMessage(errMessage);
|
||||||
|
return jr;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
|
||||||
|
XSSFRow row = sheet.getRow(i); //열읽기
|
||||||
|
if(null == row) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
HashMap<String, String> hashMap = new HashMap<>();
|
||||||
|
// 행의 두번째 열(이름부터 받아오기)
|
||||||
|
XSSFCell cell = null;
|
||||||
|
boolean errSts = true;
|
||||||
|
|
||||||
|
for(int j = 0 ; j <= 7; 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;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(null != cell){
|
||||||
|
switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
||||||
|
case Cell.CELL_TYPE_NUMERIC:
|
||||||
|
cell.setCellType(Cell.CELL_TYPE_STRING);
|
||||||
|
}
|
||||||
|
cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 항목 체크 Start
|
||||||
|
if(j == 0) {
|
||||||
|
//배당일
|
||||||
|
if(getItemChk("dividendDate", cellValue) && errSts) {
|
||||||
|
hashMap.put("dividendDate", cellValue);
|
||||||
|
}else {
|
||||||
|
errItemCnt++;
|
||||||
|
errItemLine += (i+1) + "행(배당일) ";
|
||||||
|
errSts = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(j == 1) {
|
||||||
|
//본사건번호
|
||||||
|
if(getItemChk("prsctNo", cellValue) && errSts) {
|
||||||
|
hashMap.put("prsctNo", cellValue);
|
||||||
|
}else {
|
||||||
|
errItemCnt++;
|
||||||
|
errItemLine += (i+1) + "행(본사건번호) ";
|
||||||
|
errSts = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(j == 2) {
|
||||||
|
//조정사건번호
|
||||||
|
if(getItemChk("prsctAdrNo", cellValue) && errSts) {
|
||||||
|
hashMap.put("prsctAdrNo", cellValue);
|
||||||
|
}else {
|
||||||
|
errItemCnt++;
|
||||||
|
errItemLine += (i+1) + "행(조정사건번호) ";
|
||||||
|
errSts = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(j == 3) {
|
||||||
|
//원고 이름
|
||||||
|
if(getItemChk("plntfNm", cellValue) && errSts) {
|
||||||
|
hashMap.put("plntfNm", cellValue);
|
||||||
|
}else {
|
||||||
|
errItemCnt++;
|
||||||
|
errItemLine += (i+1) + "행(원고 이름) ";
|
||||||
|
errSts = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(j == 4) {
|
||||||
|
//원고 연락처
|
||||||
|
if(getItemChk("plntfPhone", cellValue) && errSts) {
|
||||||
|
hashMap.put("plntfPhone", cellValue);
|
||||||
|
}else {
|
||||||
|
errItemCnt++;
|
||||||
|
errItemLine += (i+1) + "행(원고 연락처) ";
|
||||||
|
errSts = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(j == 5) {
|
||||||
|
//피고 이름
|
||||||
|
if(getItemChk("dfndnNm", cellValue) && errSts) {
|
||||||
|
hashMap.put("dfndnNm", cellValue);
|
||||||
|
}else {
|
||||||
|
errItemCnt++;
|
||||||
|
errItemLine += (i+1) + "행(피고 이름) ";
|
||||||
|
errSts = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(j == 6) {
|
||||||
|
//피고 연락처
|
||||||
|
if(getItemChk("dfndnPhone", cellValue) && errSts) {
|
||||||
|
hashMap.put("dfndnPhone", cellValue);
|
||||||
|
}else {
|
||||||
|
errItemCnt++;
|
||||||
|
errItemLine += (i+1) + "행(피고 연락처) ";
|
||||||
|
errSts = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(j == 7) {
|
||||||
|
//사건내용
|
||||||
|
if(getItemChk("prsctCn", cellValue) && errSts) {
|
||||||
|
hashMap.put("prsctCn", cellValue);
|
||||||
|
}else {
|
||||||
|
errItemCnt++;
|
||||||
|
errItemLine += (i+1) + "행(사건내용) ";
|
||||||
|
errSts = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 항목 체크 End
|
||||||
}
|
}
|
||||||
|
|
||||||
if(errSts) {
|
if(errSts) {
|
||||||
@ -427,39 +578,41 @@ public class AdrPrsctLinkController {
|
|||||||
|
|
||||||
//jr.setData(hashMapList);
|
//jr.setData(hashMapList);
|
||||||
jr.setSuccess(true);
|
jr.setSuccess(true);
|
||||||
|
|
||||||
if(errItemCnt > 0) {
|
|
||||||
jr.setMessage("유효하지 않은 형식의 데이터가 " + errItemCnt +"건입니다.\n" + errItemLine.trim());
|
|
||||||
}else {
|
|
||||||
jr.setMessage("");
|
|
||||||
|
|
||||||
//Step1. 데이터 변환
|
|
||||||
List<AdrPrsctLinkVO> adrPrsctLinkList = new ArrayList<AdrPrsctLinkVO>();
|
|
||||||
// List foreach 문
|
|
||||||
for (HashMap<String, String> item : hashMapList) {
|
|
||||||
AdrPrsctLinkVO adrPrsctLinkVO = new AdrPrsctLinkVO();
|
|
||||||
adrPrsctLinkVO.setDividendDate(item.get("dividendDate"));
|
|
||||||
adrPrsctLinkVO.setPrsctNo(item.get("prsctNo"));
|
|
||||||
adrPrsctLinkVO.setPrsctAdrNo(item.get("prsctAdrNo"));
|
|
||||||
adrPrsctLinkVO.setPlntfNm(item.get("plntfNm"));
|
|
||||||
adrPrsctLinkVO.setPlntfPhone(item.get("plntfPhone"));
|
|
||||||
adrPrsctLinkVO.setDfndnNm(item.get("dfndnNm"));
|
|
||||||
adrPrsctLinkVO.setDfndnPhone(item.get("dfndnPhone"));
|
|
||||||
adrPrsctLinkVO.setPrsctCn(item.get("prsctCn"));
|
|
||||||
adrPrsctLinkVO.setFrstRegisterId(loginVO.getUniqId());
|
|
||||||
adrPrsctLinkVO.setLastUpdusrId(loginVO.getUniqId());
|
|
||||||
|
|
||||||
//List Add
|
|
||||||
adrPrsctLinkList.add(adrPrsctLinkVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Step2. 데이터 저장
|
|
||||||
adrPrsctLinkService.adrPrsctLinkListInsert(adrPrsctLinkList);
|
|
||||||
}
|
|
||||||
} //xlsx 처리 끝
|
} //xlsx 처리 끝
|
||||||
|
|
||||||
|
// 데이터 저장 START
|
||||||
|
if(errItemCnt > 0) {
|
||||||
|
jr.setMessage("유효하지 않은 형식의 데이터가 " + errItemCnt +"건입니다.\n" + errItemLine.trim());
|
||||||
|
}else {
|
||||||
|
jr.setMessage("");
|
||||||
|
|
||||||
|
//Step1. 데이터 변환
|
||||||
|
List<AdrPrsctLinkVO> adrPrsctLinkList = new ArrayList<AdrPrsctLinkVO>();
|
||||||
|
// List foreach 문
|
||||||
|
for (HashMap<String, String> item : hashMapList) {
|
||||||
|
AdrPrsctLinkVO adrPrsctLinkVO = new AdrPrsctLinkVO();
|
||||||
|
adrPrsctLinkVO.setDividendDate(item.get("dividendDate"));
|
||||||
|
adrPrsctLinkVO.setPrsctNo(item.get("prsctNo"));
|
||||||
|
adrPrsctLinkVO.setPrsctAdrNo(item.get("prsctAdrNo"));
|
||||||
|
adrPrsctLinkVO.setPlntfNm(item.get("plntfNm"));
|
||||||
|
adrPrsctLinkVO.setPlntfPhone(item.get("plntfPhone"));
|
||||||
|
adrPrsctLinkVO.setDfndnNm(item.get("dfndnNm"));
|
||||||
|
adrPrsctLinkVO.setDfndnPhone(item.get("dfndnPhone"));
|
||||||
|
adrPrsctLinkVO.setPrsctCn(item.get("prsctCn"));
|
||||||
|
adrPrsctLinkVO.setFrstRegisterId(loginVO.getUniqId());
|
||||||
|
adrPrsctLinkVO.setLastUpdusrId(loginVO.getUniqId());
|
||||||
|
|
||||||
|
//List Add
|
||||||
|
adrPrsctLinkList.add(adrPrsctLinkVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Step2. 데이터 저장
|
||||||
|
adrPrsctLinkService.adrPrsctLinkListInsert(adrPrsctLinkList);
|
||||||
|
}
|
||||||
|
// 데이터 저장 END
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user