diff --git a/src/main/java/cokr/xit/fims/crdn/web/Crdn03Controller.java b/src/main/java/cokr/xit/fims/crdn/web/Crdn03Controller.java
index 1c7ec78e..d6fc58af 100644
--- a/src/main/java/cokr/xit/fims/crdn/web/Crdn03Controller.java
+++ b/src/main/java/cokr/xit/fims/crdn/web/Crdn03Controller.java
@@ -1,21 +1,28 @@
package cokr.xit.fims.crdn.web;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.function.BiFunction;
import javax.annotation.Resource;
+import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.web.servlet.ModelAndView;
import cokr.xit.base.code.CommonCode;
+import cokr.xit.base.file.xls.XLSWriter;
+import cokr.xit.base.file.xls.XLSWriter.Styler;
import cokr.xit.base.user.ManagedUser;
import cokr.xit.base.user.dao.UserMapper;
import cokr.xit.base.web.ApplicationController;
+import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.CrdnQuery;
import cokr.xit.fims.crdn.dao.GlobalStngMapper;
import cokr.xit.fims.crdn.service.CrdnService;
import cokr.xit.fims.crdn.service.CrdnStngService;
+import cokr.xit.foundation.data.DataObject;
/**표지정보확인 서비스 웹 컨트롤러.
* {웹 컨텍스트}/crdn/crdn03 로 접근할 수 있다.
@@ -72,6 +79,55 @@ public class Crdn03Controller extends ApplicationController {
String sggCd = globalStngMapper.selectSggCd(curDeptCode);
query.setSggCd(sggCd);
+
+ if("xls".equals(query.getDownload())) {
+ String[] excelTitle = query.getExcelTitle();
+ List titles = new ArrayList();
+ for(int i = 0; i < excelTitle.length; i++) {
+ String item = excelTitle[i];
+ titles.add(item);
+ }
+
+ int[] excelTitleWidth = query.getExcelTitleWidth();
+ List widths = new ArrayList<>();
+ for(int i = 0; i < excelTitleWidth.length; i++) {
+ int item = excelTitleWidth[i];
+ widths.add(item);
+ }
+
+ XLSWriter xlsx = new XLSWriter()
+ .setFilename("표지정보미확인자료 목록.xlsx")
+ .worksheet(0);
+ List headerStylers = CmmnUtil.makeHeadersByDiffrentWidths(widths, xlsx);
+ CellStyle numeric = xlsx.n_nn0();
+
+ xlsx.cell(0, 0)
+ .value("표지정보미확인자료 목록", XLSWriter.Styler.CENTER)
+ .merge(0, titles.size()-1)
+ .cell(3, 0)
+ .rowValues(CmmnUtil.mergeListByIndex(titles, headerStylers));
+
+ List list = crdnService.getCrackdownList(query.setFetchSize(0));
+
+ BiFunction getValue = (titleNm, noting) -> {
+ switch(titleNm) {
+ case "자료출처": return "CRDN_INPT_SE_NM";
+ case "위반일시": return xlsx.format(o -> xlsx.str2datetime(o.get("CRDN_YMD_TM")));
+ case "차량번호": return "VHRNO";
+ case "법정동": return "CRDN_STDG_NM";
+ case "잔액": return xlsx.style("BLNC", numeric);
+ case "사진건수": return "ATCH_FILE_CNT";
+ case "발행번호": return "CRDN_SN";
+ }
+ return "";
+ };
+
+ xlsx.cell(4, 0)
+ .values(list, titles.stream().map((item) -> { return getValue.apply(item, null); }).toArray());
+
+ return new ModelAndView("xlsView").addObject("xls", xlsx);
+ }
+
return setCollectionInfo(new ModelAndView("jsonView"), crdnService.getCrackdownList(query),"");
}
diff --git a/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml b/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml
index 0b9f49b9..4caed824 100644
--- a/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml
+++ b/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml
@@ -391,6 +391,7 @@ SELECT C.CRDN_ID
, C.SGG_CD
, C.TASK_SE_CD
, C.CRDN_INPT_SE_CD
+ , (SELECT GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM
, CONCAT(C.CRDN_YMD,'',C.CRDN_TM) AS CRDN_YMD_TM
, C.VHRNO
, C.CRDN_STDG_NM
diff --git a/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn03010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn03010-main.jsp
index 98c99474..64d1b80f 100644
--- a/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn03010-main.jsp
+++ b/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn03010-main.jsp
@@ -300,7 +300,19 @@ $(document).ready(function(){
**************************************************************************/
$('#btnReset--${pageName}').on('click', () => $P.fnReset());
$('#btnSearch--${pageName}').on('click', () => $P.searchCrdnList());
-
+ $('#btnExcel--${pageName}').on('click', function(){
+
+ if($P.crdnControl.dataset.empty){
+ alert("조회된 자료가 없습니다.");
+ return;
+ }
+
+ var headerInfo = $("#crdnTheadTr--${pageName} th").not(".dummy-th").not(":eq(0)").getHeaderInfo();
+ $P.crdnControl.query.excelTitle = headerInfo.excelTitle;
+ $P.crdnControl.query.excelTitleWidth = headerInfo.excelTitleWidth;
+ $P.crdnControl.download();
+ });
+
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollCrdnList);
$('#btnUpdateToConfirmData--${pageName}').on('click', () => {