검찰연계 엑셀업로드 기능 추가
This commit is contained in:
parent
c31f9eff61
commit
428796741e
@ -8,6 +8,10 @@ import java.util.Locale;
|
||||
import javax.annotation.Resource;
|
||||
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.ss.usermodel.Cell;
|
||||
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
||||
@ -269,56 +273,45 @@ public class AdrPrsctLinkController {
|
||||
|
||||
int errItemCnt = 0;
|
||||
String errItemLine = "";
|
||||
|
||||
List<HashMap<String, String>> hashMapList = new ArrayList<HashMap<String, String>>();
|
||||
|
||||
//엑셀 확장자에 따른 처리 로직 분리
|
||||
//확장자가 xlsx
|
||||
if(Ext.equals("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) {
|
||||
if(Ext.equals("xls")) {
|
||||
HSSFWorkbook workbook = new HSSFWorkbook(files.get(0).getInputStream());
|
||||
HSSFSheet sheet = workbook.getSheetAt(0);
|
||||
|
||||
if(sheet.getLastRowNum() > 20001) { //
|
||||
errMessage = "20000건 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.";
|
||||
jr.setSuccess(false);
|
||||
jr.setMessage(errMessage);
|
||||
return jr;
|
||||
}
|
||||
|
||||
List<HashMap<String, String>> hashMapList = new ArrayList<HashMap<String, String>>();
|
||||
for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
|
||||
XSSFRow row = sheet.getRow(i); //열읽기
|
||||
HSSFRow row = sheet.getRow(i); //열읽기
|
||||
if(null == row) {
|
||||
continue;
|
||||
}
|
||||
|
||||
HashMap<String, String> hashMap = new HashMap<>();
|
||||
// 행의 두번째 열(이름부터 받아오기)
|
||||
XSSFCell cell = null;
|
||||
HSSFCell cell = null;
|
||||
boolean errSts = true;
|
||||
|
||||
for(int j = 0 ; j <= 7; j++){ //행읽기(6행까지나 2행까지만 필요)
|
||||
for(int j = 0 ; j < 6; j++){ //행읽기(6행까지나 2행까지만 필요)
|
||||
cellValue = "";
|
||||
cell = row.getCell(j); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5
|
||||
if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
|
||||
//System.out.println("Cell 데이터가 없습니다.");
|
||||
if(j == 1) {
|
||||
if (sheet.getLastRowNum() == i) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//errPhoneCnt++;
|
||||
//errSts = false;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
if(null != cell){
|
||||
switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
||||
@ -327,8 +320,8 @@ public class AdrPrsctLinkController {
|
||||
}
|
||||
cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ;
|
||||
}
|
||||
|
||||
// 항목 체크
|
||||
|
||||
// 항목 체크 Start
|
||||
if(j == 0) {
|
||||
//배당일
|
||||
if(getItemChk("dividendDate", cellValue) && errSts) {
|
||||
@ -416,7 +409,165 @@ public class AdrPrsctLinkController {
|
||||
errSts = false;
|
||||
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) {
|
||||
@ -427,39 +578,41 @@ public class AdrPrsctLinkController {
|
||||
|
||||
//jr.setData(hashMapList);
|
||||
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 처리 끝
|
||||
|
||||
// 데이터 저장 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 {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user