Compare commits

..

No commits in common. "bf06615c2f6edaedf2a05150dd674fb4b01b0489" and "8e98adef4f3c15a9a79b027c41fb1cd1e02ccbe7" have entirely different histories.

8 changed files with 116 additions and 300 deletions

View File

@ -9,16 +9,11 @@ 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;
@ -93,36 +88,6 @@ 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();

View File

@ -1,8 +1,6 @@
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;
@ -11,7 +9,4 @@ 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);
} }

View File

@ -7,7 +7,6 @@ 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;
@ -25,18 +24,10 @@ 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) {

View File

@ -1,48 +0,0 @@
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());
}
}

View File

@ -166,7 +166,21 @@ public class Utils {
wb.write(response.getOutputStream()); wb.write(response.getOutputStream());
wb.close(); wb.close();
} else { } else {
createNoDataAlert(response); 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();
} }
} }
@ -238,7 +252,21 @@ public class Utils {
wb.write(response.getOutputStream()); wb.write(response.getOutputStream());
wb.close(); wb.close();
} else { } else {
createNoDataAlert(response); 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();
} }
} }
@ -332,7 +360,21 @@ public class Utils {
wb.write(response.getOutputStream()); wb.write(response.getOutputStream());
wb.close(); wb.close();
} else { } else {
createNoDataAlert(response); 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();
} }
} }
@ -457,7 +499,21 @@ public class Utils {
wb.write(response.getOutputStream()); wb.write(response.getOutputStream());
wb.close(); wb.close();
} else { } else {
createNoDataAlert(response); 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();
} }
} }
@ -556,7 +612,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));
@ -573,7 +629,21 @@ public class Utils {
wb.write(response.getOutputStream()); wb.write(response.getOutputStream());
wb.close(); wb.close();
} else { } else {
createNoDataAlert(response); 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();
} }
} }
@ -662,7 +732,21 @@ public class Utils {
wb.write(response.getOutputStream()); wb.write(response.getOutputStream());
wb.close(); wb.close();
} else { } else {
createNoDataAlert(response); 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();
} }
} }
@ -671,7 +755,7 @@ public class Utils {
String[] headerNames, String[] columnType, String sheetName, String excelFileName) throws IOException { String[] headerNames, String[] columnType, String sheetName, String excelFileName) throws IOException {
if(Utils.isNotEmpty(useExcelList)) { if(Utils.isNotEmpty(useExcelList)) {
// 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다.
XSSFWorkbook wb = new XSSFWorkbook(); XSSFWorkbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet(sheetName); Sheet sheet = wb.createSheet(sheetName);
Row headerRow = sheet.createRow(0); Row headerRow = sheet.createRow(0);
CellStyle cellStyle1 = wb.createCellStyle(); //쉼표들어간 숫자 양식 CellStyle cellStyle1 = wb.createCellStyle(); //쉼표들어간 숫자 양식
@ -710,7 +794,6 @@ 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 {
@ -759,122 +842,26 @@ public class Utils {
wb.write(response.getOutputStream()); wb.write(response.getOutputStream());
wb.close(); wb.close();
} else { } else {
createNoDataAlert(response); 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();
} }
} }
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]));
}
}
}
}
} }

View File

@ -78,59 +78,7 @@
<include refid="selectInternationalCrimeArrestListWhere"></include> <include refid="selectInternationalCrimeArrestListWhere"></include>
</select> </select>
<select id="selectInternationalCrimeArrestParamList" resultType="com.dbnt.faisp.util.ParamMap" parameterType="InternationalCrimeArrest"> <select id="selectSuspectPersonInfoList" resultType="SuspectPersonInfo" parameterType="int">
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,
@ -141,25 +89,8 @@
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>

View File

@ -508,9 +508,4 @@ function contentCheck(){
} }
return flag; return flag;
} }
$(document).on('click', '#icaExcelDownBtn', function (){
const formData = $("#icaSearchForm").serialize();
location.href = '/faStatistics/internationalCrimeArrest/ExcelDown?'+formData;
});

View File

@ -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}" id="icaSearchForm"> <form method="get" th:action="@{/faStatistics/internationalCrimeArrest}">
<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="icaExcelDownBtn">엑셀 다운로드</button> <button id="ivsgtAddBtn">엑셀 다운로드</button>
<button id="icaAddBtn">등록</button> <button id="icaAddBtn">등록</button>
</div> </div>
<!-- 페이징 --> <!-- 페이징 -->