Compare commits
2 Commits
8e98adef4f
...
bf06615c2f
| Author | SHA1 | Date |
|---|---|---|
|
|
bf06615c2f | |
|
|
8b6bdc1d51 |
|
|
@ -9,11 +9,16 @@ import com.dbnt.faisp.faStatistics.internationalCrimeArrest.service.Internationa
|
||||||
import com.dbnt.faisp.organMgt.model.OrganConfig;
|
import com.dbnt.faisp.organMgt.model.OrganConfig;
|
||||||
import com.dbnt.faisp.organMgt.service.OrganConfigService;
|
import com.dbnt.faisp.organMgt.service.OrganConfigService;
|
||||||
import com.dbnt.faisp.userInfo.model.UserInfo;
|
import com.dbnt.faisp.userInfo.model.UserInfo;
|
||||||
|
import com.dbnt.faisp.util.Excel;
|
||||||
|
import com.dbnt.faisp.util.ParamMap;
|
||||||
|
import com.dbnt.faisp.util.Utils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
@ -88,6 +93,36 @@ public class InternationalCrimeArrestController {
|
||||||
return internationalCrimeArrestService.savedInternationalCrimeArrest(internationalCrimeArrest);
|
return internationalCrimeArrestService.savedInternationalCrimeArrest(internationalCrimeArrest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/internationalCrimeArrest/ExcelDown")
|
||||||
|
public void icaExcelDown(HttpServletResponse response, InternationalCrimeArrest internationalCrimeArrest) {
|
||||||
|
int duplicateCount = internationalCrimeArrestService.icaDuplicateCount(internationalCrimeArrest);
|
||||||
|
int rowCnt = internationalCrimeArrest.getRowCnt() + duplicateCount;
|
||||||
|
internationalCrimeArrest.setRowCnt(rowCnt);
|
||||||
|
internationalCrimeArrest.setQueryInfo();
|
||||||
|
internationalCrimeArrest.setContentCnt(internationalCrimeArrestService.selectInternationalCrimeArrestListCnt(internationalCrimeArrest));
|
||||||
|
internationalCrimeArrest.setPaginationInfo();
|
||||||
|
|
||||||
|
Excel excel = new Excel();
|
||||||
|
String[] headers = {"ica_key", "case_num", "organ", "department", "crime_type", "violation_type", "crime_name", "occur_table", "arrest_table", "suspect_table", "sex", "age", "country", "crime_awareness_dt", "case_sent_dt", "process_result"};
|
||||||
|
String[] headerNames = { "", "", "", "", "", "", "", "", "", "", "피의자 인적사항", "", "", "", "", ""};
|
||||||
|
String[] headerNames2 = { "", "사건번호", "지방청", "경찰서", "범죄테마", "위반유형", "죄명", "발생원표", "검거원표", "피의자원표","성별","나이","국적","범죄인지","사건송치","신병처리"};
|
||||||
|
String[] columnType = { "int", "int", "String", "String", "String", "String", "String", "String", "String", "String","String","String","String","String","String","String"};
|
||||||
|
excel.setHeaders(headers);
|
||||||
|
excel.setHeaderNames(headerNames);
|
||||||
|
excel.setHeaderNames2(headerNames2);
|
||||||
|
excel.setColumnType(columnType);
|
||||||
|
excel.setSheetName("국제범죄검거현황");
|
||||||
|
excel.setExcelFileName("국제범죄검거현황");
|
||||||
|
List<ParamMap> icaList = internationalCrimeArrestService.selectInternationalCrimeArrestParamList(internationalCrimeArrest);
|
||||||
|
excel.setList(icaList);
|
||||||
|
|
||||||
|
try {
|
||||||
|
Utils.icaDownExcel(response, excel);
|
||||||
|
} catch (IOException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public List<OrganConfig> selectOrganList(){
|
public List<OrganConfig> selectOrganList(){
|
||||||
List<CodeMgt> organCdList = codeMgtService.selectCodeMgtList("OG");
|
List<CodeMgt> organCdList = codeMgtService.selectCodeMgtList("OG");
|
||||||
List<OrganConfig> organConfigList = organConfigService.selectSavedOrganList();
|
List<OrganConfig> organConfigList = organConfigService.selectSavedOrganList();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.mapper;
|
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.mapper;
|
||||||
|
|
||||||
|
import com.dbnt.faisp.equip.model.Equip;
|
||||||
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
|
||||||
|
import com.dbnt.faisp.util.ParamMap;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -9,4 +11,7 @@ import java.util.List;
|
||||||
public interface InternationalCrimeArrestMapper{
|
public interface InternationalCrimeArrestMapper{
|
||||||
List<InternationalCrimeArrest> selectInternationalCrimeArrestList(InternationalCrimeArrest internationalCrimeArrest);
|
List<InternationalCrimeArrest> selectInternationalCrimeArrestList(InternationalCrimeArrest internationalCrimeArrest);
|
||||||
Integer selectInternationalCrimeArrestListCnt(InternationalCrimeArrest internationalCrimeArrest);
|
Integer selectInternationalCrimeArrestListCnt(InternationalCrimeArrest internationalCrimeArrest);
|
||||||
|
List<ParamMap> selectInternationalCrimeArrestParamList(InternationalCrimeArrest internationalCrimeArrest);
|
||||||
|
List<ParamMap> selectSuspectPersonInfoParamList(int icaKey);
|
||||||
|
Integer icaDuplicateCount(InternationalCrimeArrest internationalCrimeArrest);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalC
|
||||||
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo;
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo;
|
||||||
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.InternationalCrimeArrestRepository;
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.InternationalCrimeArrestRepository;
|
||||||
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.SuspectPersonInfoRepository;
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.SuspectPersonInfoRepository;
|
||||||
|
import com.dbnt.faisp.util.ParamMap;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
@ -24,10 +25,18 @@ public class InternationalCrimeArrestService extends BaseService {
|
||||||
return internationalCrimeArrestMapper.selectInternationalCrimeArrestList(InternationalCrimeArrest);
|
return internationalCrimeArrestMapper.selectInternationalCrimeArrestList(InternationalCrimeArrest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ParamMap> selectInternationalCrimeArrestParamList(InternationalCrimeArrest InternationalCrimeArrest) {
|
||||||
|
return internationalCrimeArrestMapper.selectInternationalCrimeArrestParamList(InternationalCrimeArrest);
|
||||||
|
}
|
||||||
|
|
||||||
public Integer selectInternationalCrimeArrestListCnt(InternationalCrimeArrest internationalCrimeArrest) {
|
public Integer selectInternationalCrimeArrestListCnt(InternationalCrimeArrest internationalCrimeArrest) {
|
||||||
return internationalCrimeArrestMapper.selectInternationalCrimeArrestListCnt(internationalCrimeArrest);
|
return internationalCrimeArrestMapper.selectInternationalCrimeArrestListCnt(internationalCrimeArrest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Integer icaDuplicateCount(InternationalCrimeArrest internationalCrimeArrest) {
|
||||||
|
return internationalCrimeArrestMapper.icaDuplicateCount(internationalCrimeArrest);
|
||||||
|
}
|
||||||
|
|
||||||
public InternationalCrimeArrest selectInternationalCrimeArrest(Integer icaKey) {
|
public InternationalCrimeArrest selectInternationalCrimeArrest(Integer icaKey) {
|
||||||
InternationalCrimeArrest savedInternationalCrimeArrest = internationalCrimeArrestRepository.findById(icaKey).orElse(null);
|
InternationalCrimeArrest savedInternationalCrimeArrest = internationalCrimeArrestRepository.findById(icaKey).orElse(null);
|
||||||
if (savedInternationalCrimeArrest != null) {
|
if (savedInternationalCrimeArrest != null) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
package com.dbnt.faisp.util;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.ToString;
|
||||||
|
import org.apache.poi.ss.usermodel.CellStyle;
|
||||||
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@ToString
|
||||||
|
public class Excel {
|
||||||
|
private String[] headers;
|
||||||
|
private String[] headerNames;
|
||||||
|
private String[] headerNames2;
|
||||||
|
private String[] headerNames3;
|
||||||
|
private String[] columnType;
|
||||||
|
private String sheetName;
|
||||||
|
private String excelFileName;
|
||||||
|
private List<ParamMap> list;
|
||||||
|
private String outputFileName;
|
||||||
|
private Row row;
|
||||||
|
|
||||||
|
private Row headerRow;
|
||||||
|
private Sheet sheet;
|
||||||
|
private CellStyle cellStyle1; //쉼표들어간 숫자 양식
|
||||||
|
private CellStyle cellStyle2; //숫자양식
|
||||||
|
private CellStyle headerStyle; //숫자양식
|
||||||
|
private CellStyle headerStyle2;
|
||||||
|
private CellStyle headerStyle3;
|
||||||
|
|
||||||
|
|
||||||
|
public void defalutConfig(XSSFWorkbook wb){
|
||||||
|
this.setSheet(wb.createSheet(this.sheetName));
|
||||||
|
this.setHeaderRow(this.sheet.createRow(0));
|
||||||
|
this.setCellStyle1(wb.createCellStyle());
|
||||||
|
this.setCellStyle2(wb.createCellStyle());
|
||||||
|
this.setHeaderStyle(wb.createCellStyle());
|
||||||
|
this.setHeaderStyle2(wb.createCellStyle());
|
||||||
|
this.setHeaderStyle3(wb.createCellStyle());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -166,21 +166,7 @@ public class Utils {
|
||||||
wb.write(response.getOutputStream());
|
wb.write(response.getOutputStream());
|
||||||
wb.close();
|
wb.close();
|
||||||
} else {
|
} else {
|
||||||
response.setHeader("Content-Type", "text/html; charset=UTF-8");
|
createNoDataAlert(response);
|
||||||
PrintWriter out = response.getWriter();
|
|
||||||
|
|
||||||
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
|
|
||||||
out.write("<html lang=\"ko\">");
|
|
||||||
out.write("<head>");
|
|
||||||
out.write("<script type=\"text/javascript\">");
|
|
||||||
out.write("alert('데이터가 없습니다.');");
|
|
||||||
out.write("history.back(-1);");
|
|
||||||
out.write("</script>");
|
|
||||||
out.write("</head>");
|
|
||||||
out.write("</html>");
|
|
||||||
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -252,21 +238,7 @@ public class Utils {
|
||||||
wb.write(response.getOutputStream());
|
wb.write(response.getOutputStream());
|
||||||
wb.close();
|
wb.close();
|
||||||
} else {
|
} else {
|
||||||
response.setHeader("Content-Type", "text/html; charset=UTF-8");
|
createNoDataAlert(response);
|
||||||
PrintWriter out = response.getWriter();
|
|
||||||
|
|
||||||
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
|
|
||||||
out.write("<html lang=\"ko\">");
|
|
||||||
out.write("<head>");
|
|
||||||
out.write("<script type=\"text/javascript\">");
|
|
||||||
out.write("alert('데이터가 없습니다.');");
|
|
||||||
out.write("history.back(-1);");
|
|
||||||
out.write("</script>");
|
|
||||||
out.write("</head>");
|
|
||||||
out.write("</html>");
|
|
||||||
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -360,21 +332,7 @@ public class Utils {
|
||||||
wb.write(response.getOutputStream());
|
wb.write(response.getOutputStream());
|
||||||
wb.close();
|
wb.close();
|
||||||
} else {
|
} else {
|
||||||
response.setHeader("Content-Type", "text/html; charset=UTF-8");
|
createNoDataAlert(response);
|
||||||
PrintWriter out = response.getWriter();
|
|
||||||
|
|
||||||
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
|
|
||||||
out.write("<html lang=\"ko\">");
|
|
||||||
out.write("<head>");
|
|
||||||
out.write("<script type=\"text/javascript\">");
|
|
||||||
out.write("alert('데이터가 없습니다.');");
|
|
||||||
out.write("history.back(-1);");
|
|
||||||
out.write("</script>");
|
|
||||||
out.write("</head>");
|
|
||||||
out.write("</html>");
|
|
||||||
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -499,21 +457,7 @@ public class Utils {
|
||||||
wb.write(response.getOutputStream());
|
wb.write(response.getOutputStream());
|
||||||
wb.close();
|
wb.close();
|
||||||
} else {
|
} else {
|
||||||
response.setHeader("Content-Type", "text/html; charset=UTF-8");
|
createNoDataAlert(response);
|
||||||
PrintWriter out = response.getWriter();
|
|
||||||
|
|
||||||
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
|
|
||||||
out.write("<html lang=\"ko\">");
|
|
||||||
out.write("<head>");
|
|
||||||
out.write("<script type=\"text/javascript\">");
|
|
||||||
out.write("alert('데이터가 없습니다.');");
|
|
||||||
out.write("history.back(-1);");
|
|
||||||
out.write("</script>");
|
|
||||||
out.write("</head>");
|
|
||||||
out.write("</html>");
|
|
||||||
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -612,7 +556,7 @@ public class Utils {
|
||||||
sheet.autoSizeColumn(j);
|
sheet.autoSizeColumn(j);
|
||||||
sheet.setColumnWidth(j, (sheet.getColumnWidth(j)) + 1024);
|
sheet.setColumnWidth(j, (sheet.getColumnWidth(j)) + 1024);
|
||||||
}
|
}
|
||||||
sheet.addMergedRegion(new CellRangeAddress(0,1,0,0));
|
sheet.addMergedRegion(new CellRangeAddress(0,1,0,0)); // ( 시작행, 종료행, 시작열, 종료열 )
|
||||||
sheet.addMergedRegion(new CellRangeAddress(0,1,1,1));
|
sheet.addMergedRegion(new CellRangeAddress(0,1,1,1));
|
||||||
sheet.addMergedRegion(new CellRangeAddress(0,1,2,2));
|
sheet.addMergedRegion(new CellRangeAddress(0,1,2,2));
|
||||||
sheet.addMergedRegion(new CellRangeAddress(0,0,3,8));
|
sheet.addMergedRegion(new CellRangeAddress(0,0,3,8));
|
||||||
|
|
@ -629,21 +573,7 @@ public class Utils {
|
||||||
wb.write(response.getOutputStream());
|
wb.write(response.getOutputStream());
|
||||||
wb.close();
|
wb.close();
|
||||||
} else {
|
} else {
|
||||||
response.setHeader("Content-Type", "text/html; charset=UTF-8");
|
createNoDataAlert(response);
|
||||||
PrintWriter out = response.getWriter();
|
|
||||||
|
|
||||||
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
|
|
||||||
out.write("<html lang=\"ko\">");
|
|
||||||
out.write("<head>");
|
|
||||||
out.write("<script type=\"text/javascript\">");
|
|
||||||
out.write("alert('데이터가 없습니다.');");
|
|
||||||
out.write("history.back(-1);");
|
|
||||||
out.write("</script>");
|
|
||||||
out.write("</head>");
|
|
||||||
out.write("</html>");
|
|
||||||
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -732,21 +662,7 @@ public class Utils {
|
||||||
wb.write(response.getOutputStream());
|
wb.write(response.getOutputStream());
|
||||||
wb.close();
|
wb.close();
|
||||||
} else {
|
} else {
|
||||||
response.setHeader("Content-Type", "text/html; charset=UTF-8");
|
createNoDataAlert(response);
|
||||||
PrintWriter out = response.getWriter();
|
|
||||||
|
|
||||||
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
|
|
||||||
out.write("<html lang=\"ko\">");
|
|
||||||
out.write("<head>");
|
|
||||||
out.write("<script type=\"text/javascript\">");
|
|
||||||
out.write("alert('데이터가 없습니다.');");
|
|
||||||
out.write("history.back(-1);");
|
|
||||||
out.write("</script>");
|
|
||||||
out.write("</head>");
|
|
||||||
out.write("</html>");
|
|
||||||
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -794,6 +710,7 @@ public class Utils {
|
||||||
Row row = sheet.createRow(i+1);
|
Row row = sheet.createRow(i+1);
|
||||||
rowData.set("use_no", useExcelList.get(i).getUseNo());
|
rowData.set("use_no", useExcelList.get(i).getUseNo());
|
||||||
rowData.set("sosok", useExcelList.get(i).getSosok());
|
rowData.set("sosok", useExcelList.get(i).getSosok());
|
||||||
|
|
||||||
if(useExcelList.get(i).getUseDt() != null) {
|
if(useExcelList.get(i).getUseDt() != null) {
|
||||||
rowData.set("use_dt", useExcelList.get(i).getUseDt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
rowData.set("use_dt", useExcelList.get(i).getUseDt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
}else {
|
}else {
|
||||||
|
|
@ -842,26 +759,122 @@ public class Utils {
|
||||||
wb.write(response.getOutputStream());
|
wb.write(response.getOutputStream());
|
||||||
wb.close();
|
wb.close();
|
||||||
} else {
|
} else {
|
||||||
response.setHeader("Content-Type", "text/html; charset=UTF-8");
|
createNoDataAlert(response);
|
||||||
PrintWriter out = response.getWriter();
|
|
||||||
|
|
||||||
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
|
|
||||||
out.write("<html lang=\"ko\">");
|
|
||||||
out.write("<head>");
|
|
||||||
out.write("<script type=\"text/javascript\">");
|
|
||||||
out.write("alert('데이터가 없습니다.');");
|
|
||||||
out.write("history.back(-1);");
|
|
||||||
out.write("</script>");
|
|
||||||
out.write("</head>");
|
|
||||||
out.write("</html>");
|
|
||||||
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void icaDownExcel(HttpServletResponse response, Excel excel) throws IOException {
|
||||||
|
if (Utils.isNotEmpty(excel.getList())) {
|
||||||
|
// 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다.
|
||||||
|
XSSFWorkbook wb = new XSSFWorkbook();
|
||||||
|
excel.defalutConfig(wb);
|
||||||
|
|
||||||
|
XSSFDataFormat format = wb.createDataFormat();
|
||||||
|
excel.getCellStyle1().setDataFormat(format.getFormat("#,##0"));
|
||||||
|
excel.getCellStyle2().setDataFormat(format.getFormat("#"));
|
||||||
|
excel.getHeaderStyle().setAlignment(HorizontalAlignment.CENTER);
|
||||||
|
excel.getHeaderStyle().setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||||
|
excel.getHeaderStyle().setFillForegroundColor((short)3);
|
||||||
|
excel.getHeaderStyle().setFillForegroundColor(IndexedColors.LIME.getIndex());
|
||||||
|
|
||||||
|
// 헤더 생성
|
||||||
|
createHeader(excel, excel.getHeaderNames(), excel.getHeaderStyle3(), 0);
|
||||||
|
createHeader(excel, excel.getHeaderNames2(), excel.getHeaderStyle2(), 1);
|
||||||
|
// 헤더 병합
|
||||||
|
excel.getSheet().addMergedRegion(new CellRangeAddress(0,0,10,12)); // ( 시작행, 종료행, 시작열, 종료열 )
|
||||||
|
|
||||||
|
rowCreate(excel, 2, 10, 12);
|
||||||
|
|
||||||
|
//엑셀이름 한글깨짐방지
|
||||||
|
excelNameHangulBrokenPrevention(response, wb, excel);
|
||||||
|
} else {
|
||||||
|
// 데이터 없을 시 경고창 생성
|
||||||
|
createNoDataAlert(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void createNoDataAlert(HttpServletResponse response) throws IOException {
|
||||||
|
response.setHeader("Content-Type", "text/html; charset=UTF-8");
|
||||||
|
PrintWriter out = response.getWriter();
|
||||||
|
|
||||||
|
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
|
||||||
|
out.write("<html lang=\"ko\">");
|
||||||
|
out.write("<head>");
|
||||||
|
out.write("<script type=\"text/javascript\">");
|
||||||
|
out.write("alert('데이터가 없습니다.');");
|
||||||
|
out.write("history.back(-1);");
|
||||||
|
out.write("</script>");
|
||||||
|
out.write("</head>");
|
||||||
|
out.write("</html>");
|
||||||
|
|
||||||
|
out.flush();
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void excelNameHangulBrokenPrevention(HttpServletResponse response, XSSFWorkbook wb, Excel excel) throws IOException {
|
||||||
|
excel.setOutputFileName(new String(excel.getExcelFileName().getBytes("KSC5601"), "8859_1"));
|
||||||
|
response.setHeader("Set-Cookie", "fileDownload=true; path=/");
|
||||||
|
response.setHeader("Content-Disposition", String.format("attachment; filename=\""+excel.getOutputFileName()+"_"+Utils.getTimeStampString("yyyyMMdd_HHmm")+".xlsx\""));
|
||||||
|
|
||||||
|
wb.write(response.getOutputStream());
|
||||||
|
wb.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void createHeader(Excel excel, String[] headerNames, CellStyle headerStyle, int index) {
|
||||||
|
if (headerNames.length > 0) {
|
||||||
|
excel.setHeaderRow(excel.getSheet().createRow(index));
|
||||||
|
for(int j=0; j< headerNames.length; j++) {
|
||||||
|
Cell cell = excel.getHeaderRow().createCell(j);
|
||||||
|
cell.setCellValue(headerNames[j]);
|
||||||
|
cell.setCellStyle(headerStyle);
|
||||||
|
excel.getSheet().autoSizeColumn(j);
|
||||||
|
excel.getSheet().setColumnWidth(j, (excel.getSheet().getColumnWidth(j)) + 1024);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void rowCreate(Excel excel, int rownum, int startIndex, int endIndex){
|
||||||
|
int mergeCount = 1;
|
||||||
|
boolean mergeCheck = false;
|
||||||
|
|
||||||
|
for(int i=0; i<excel.getList().size(); i++) {
|
||||||
|
ParamMap rowData = excel.getList().get(i);
|
||||||
|
excel.setRow(excel.getSheet().createRow(i+rownum));
|
||||||
|
|
||||||
|
if (mergeCheck) {
|
||||||
|
mergeCount += 1;
|
||||||
|
} else {
|
||||||
|
mergeCount = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int j=0; j<excel.getHeaders().length; j++) {
|
||||||
|
Cell cell = excel.getRow().createCell(j);
|
||||||
|
|
||||||
|
if (i > 0 && j > 0) {
|
||||||
|
if (rowData.get(excel.getHeaders()[0]).equals(excel.getList().get(i-1).get(excel.getHeaders()[0])) && !(j >= startIndex && j <= endIndex)) {
|
||||||
|
if (i < excel.getList().size()-1 && rowData.get(excel.getHeaders()[0]).equals(excel.getList().get(i+1).get(excel.getHeaders()[0]))) {
|
||||||
|
mergeCheck = true;
|
||||||
|
} else {
|
||||||
|
excel.getSheet().addMergedRegion(new CellRangeAddress(i+rownum-mergeCount, i+rownum, j, j));
|
||||||
|
mergeCheck = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(excel.getColumnType()[j].equalsIgnoreCase("Money")) {
|
||||||
|
cell.setCellValue(rowData.getInt(excel.getHeaders()[j]));
|
||||||
|
cell.setCellStyle(excel.getCellStyle1());
|
||||||
|
} else if(excel.getColumnType()[j].equalsIgnoreCase("Int")) {
|
||||||
|
cell.setCellValue(rowData.getInt(excel.getHeaders()[j]));
|
||||||
|
cell.setCellStyle(excel.getCellStyle2());
|
||||||
|
} else if(excel.getColumnType()[j].equalsIgnoreCase("String")) {
|
||||||
|
cell.setCellValue(rowData.getString(excel.getHeaders()[j]));
|
||||||
|
} else {
|
||||||
|
cell.setCellValue(rowData.getString(excel.getHeaders()[j]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,59 @@
|
||||||
<include refid="selectInternationalCrimeArrestListWhere"></include>
|
<include refid="selectInternationalCrimeArrestListWhere"></include>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectSuspectPersonInfoList" resultType="SuspectPersonInfo" parameterType="int">
|
<select id="selectInternationalCrimeArrestParamList" resultType="com.dbnt.faisp.util.ParamMap" parameterType="InternationalCrimeArrest">
|
||||||
|
SELECT
|
||||||
|
i.ica_key,
|
||||||
|
i.occur_table,
|
||||||
|
i.arrest_table,
|
||||||
|
i.suspect_table,
|
||||||
|
i.crime_awareness_dt,
|
||||||
|
i.case_sent_dt,
|
||||||
|
i.other_crime,
|
||||||
|
i.case_num,
|
||||||
|
i.case_overview,
|
||||||
|
i.arrest_area,
|
||||||
|
i.crackdown_personel,
|
||||||
|
i.violation_amount,
|
||||||
|
i.destination,
|
||||||
|
i.content_status,
|
||||||
|
i.wrt_organ,
|
||||||
|
i.wrt_user_seq,
|
||||||
|
i.wrt_nm,
|
||||||
|
i.wrt_dt,
|
||||||
|
cm1.item_value AS organ,
|
||||||
|
cm2.item_value AS department,
|
||||||
|
cm3.item_value AS crime_type,
|
||||||
|
cm4.item_value AS violation_type,
|
||||||
|
COALESCE(cm5.item_value, i.process_result) AS process_result,
|
||||||
|
COALESCE(cm6.item_value, i.means) AS means,
|
||||||
|
cm7.item_value AS crime_form,
|
||||||
|
COALESCE(cm8.item_value, i.purpose) AS purpose,
|
||||||
|
COALESCE(cm9.item_value, i.smuggled_goods) AS smuggled_goods,
|
||||||
|
cm10.item_value AS SEX,
|
||||||
|
cm11.item_value AS age,
|
||||||
|
COALESCE(cm12.item_value, s.country) AS country
|
||||||
|
FROM international_crime_arrest i
|
||||||
|
INNER JOIN suspect_person_info s
|
||||||
|
ON i.ica_key = s.ica_key
|
||||||
|
LEFT JOIn code_mgt cm1 ON i.organ = cm1.item_cd
|
||||||
|
LEFT JOIN code_mgt cm2 ON i.department = cm2.item_cd
|
||||||
|
LEFT JOIN code_mgt cm3 ON i.crime_type = cm3.item_cd
|
||||||
|
LEFT JOIN code_mgt cm4 ON i.violation_type = cm4.item_cd
|
||||||
|
LEFT JOIN code_mgt cm5 ON i.process_result = cm5.item_cd
|
||||||
|
LEFT JOIN code_mgt cm6 ON i.means = cm6.item_cd
|
||||||
|
LEFT JOIN code_mgt cm7 ON i.crime_form = cm7.item_cd
|
||||||
|
LEFT JOIN code_mgt cm8 ON i.purpose = cm8.item_cd
|
||||||
|
LEFT JOIN code_mgt cm9 ON i.smuggled_goods = cm9.item_cd
|
||||||
|
LEFT JOIN code_mgt cm10 ON s.sex = cm10.item_cd
|
||||||
|
LEFT JOIN code_mgt cm11 ON s.age = cm11.item_cd
|
||||||
|
LEFT JOIN code_mgt cm12 ON s.country = cm12.item_cd
|
||||||
|
<include refid="selectInternationalCrimeArrestListWhere"></include>
|
||||||
|
ORDER BY i.ica_key DESC
|
||||||
|
LIMIT #{rowCnt} OFFSET #{firstIndex}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectSuspectPersonInfoParamList" resultType="com.dbnt.faisp.util.ParamMap" parameterType="int">
|
||||||
SELECT
|
SELECT
|
||||||
s.spi_key,
|
s.spi_key,
|
||||||
s.ica_key,
|
s.ica_key,
|
||||||
|
|
@ -89,8 +141,25 @@
|
||||||
s.stay_period_expired_dt,
|
s.stay_period_expired_dt,
|
||||||
s.entry_visa
|
s.entry_visa
|
||||||
FROM suspect_person_info s
|
FROM suspect_person_info s
|
||||||
INNER JOIN international_crime_arrest i
|
INNER JOIN international_crime_arrest i
|
||||||
ON s.ica_key = i.ica_key
|
ON s.ica_key = i.ica_key
|
||||||
WHERE s.ica_key = #{icaKey}
|
WHERE s.ica_key = #{icaKey}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="icaDuplicateCount" resultType="int" parameterType="InternationalCrimeArrest">
|
||||||
|
SELECT
|
||||||
|
COUNT(*)
|
||||||
|
FROM (
|
||||||
|
SELECT
|
||||||
|
s.ica_key
|
||||||
|
, row_number() OVER (PARTITION BY s.ica_key) AS row
|
||||||
|
FROM suspect_person_info s
|
||||||
|
INNER JOIN international_crime_arrest i
|
||||||
|
ON s.ica_key = i.ica_key
|
||||||
|
<include refid="selectInternationalCrimeArrestListWhere"></include>
|
||||||
|
ORDER BY i.ica_key DESC
|
||||||
|
LIMIT #{rowCnt} OFFSET #{firstIndex}
|
||||||
|
) a
|
||||||
|
WHERE a.row > 1
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -509,3 +509,8 @@ function contentCheck(){
|
||||||
|
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$(document).on('click', '#icaExcelDownBtn', function (){
|
||||||
|
const formData = $("#icaSearchForm").serialize();
|
||||||
|
location.href = '/faStatistics/internationalCrimeArrest/ExcelDown?'+formData;
|
||||||
|
});
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
<div class="row mx-0">
|
<div class="row mx-0">
|
||||||
<div class="col-12 card">
|
<div class="col-12 card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form method="get" th:action="@{/faStatistics/internationalCrimeArrest}">
|
<form method="get" th:action="@{/faStatistics/internationalCrimeArrest}" id="icaSearchForm">
|
||||||
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
||||||
<input type="hidden" name="dateSelector" value="wrtDt">
|
<input type="hidden" name="dateSelector" value="wrtDt">
|
||||||
<div class="row justify-content-between pe-3 py-1">
|
<div class="row justify-content-between pe-3 py-1">
|
||||||
|
|
@ -187,7 +187,7 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<button id="ivsgtAddBtn">관리자마감</button>
|
<button id="ivsgtAddBtn">관리자마감</button>
|
||||||
<button id="ivsgtAddBtn">엑셀 다운로드</button>
|
<button id="icaExcelDownBtn">엑셀 다운로드</button>
|
||||||
<button id="icaAddBtn">등록</button>
|
<button id="icaAddBtn">등록</button>
|
||||||
</div>
|
</div>
|
||||||
<!-- 페이징 -->
|
<!-- 페이징 -->
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue